删除列表中的重复项目在C#
我有类类型的删除列表中的重复项目在C#
public class MyClass
{
public SomeOtherClass classObj;
public string BillId;
}
public List<MyClass> myClassObject;
样本值的列表:
BillId = "123",classObj = {},
BillId = "999",classObj = {},
BillId = "777",classObj = {},
BillId = "123",classObj = {}
所以在上面的例子中,我们有BillId
重复的值。我想删除所有重复值(不是唯一),因此结果将只包含999
& 777
值。通过全项达到这
- 环
- 的独特
BillId
- 获取计数如果计数大于1
的一种方式,商店,
BillId
另一个变量 - 循环一次删除商品基于
BillId
其他是否有任何直接的方法来实现这一目标?
,我认为这会工作:
var result = myClassObject.GroupBy(x => x.BillId)
.Where(x => x.Count() == 1)
.Select(x => x.First());
小提琴here
你也可以做到这一点,
var result = myClassObject.GroupBy(x => x.BillId)
.Where(x => !x.Skip(1).Any())
.Select(x => x.First());
这不包括'123'吗? – jdmdevdotnet
'我想删除所有重复的值(不分明),所以结果将只包含999&777值'我想他想从列表中删除完全重复。纠正我,如果我错了,但这将返回123. – jdmdevdotnet
他明确表示“没有明显的”。这是另一种在Linq中实现Distinct()效果的方法。 – FireSarge
试试这个。
var distinctList = myClassObject.GroupBy(m => m.BillId)
.Where(x => x.Count() == 1)
.SelectMany(x => x.ToList())
.ToList();
这可能有所帮助。
var result = myClassObject
.GroupBy(x => x.BillId)
.Where(x => x.Count()==1)
.Select(x => x.FirstOrDefault());
您想删除所有具有重复值的对吗?在你的情况下,你想删除这两个123? –
@JoePhillips这是正确的 – Shaggy
@Shaggy检查答案 – Sajeetharan