从给定条件的对象列表中删除一些重复项

时间:2017-03-01 01:01:23

标签: c# linq list

我有一个帐户列表如下:

Accounts          ID
1000              123
1000              123
1000              456
2000              789
2000              789

如果ID列中的帐户没有多个ID,我想删除所有重复项。在这种情况下,只应删除2000帐户。我如何在代码中实现这一目标?

3 个答案:

答案 0 :(得分:1)

您可以按Accounts进行分组,并获取包含多个不同ID的群组:

var result = list.GroupBy(x => x.Accounts)
                 .Where(g => g.Skip(1).Any(x => x.ID != g.First().ID))
                 .SelectMany(x => x).ToList();

答案 1 :(得分:0)

我认为你可以通过这样的声明来实现这个目标:

accounts.Where(a => accounts.Any(b =>
     (b.Account == a.Account) && (b.ID != a.ID)));

如果你有一个大型数据库,可能不是最佳方式。

答案 2 :(得分:-1)

除了Distinct之外,您还可以使用Group By(有时使用更大的数据执行速度更快):

lstAccount= lstAccount.GroupBy(x => new {x.ID})
                             .Select(x => x.First()).ToList();