我有一个帐户列表如下:
Accounts ID
1000 123
1000 123
1000 456
2000 789
2000 789
如果ID列中的帐户没有多个ID,我想删除所有重复项。在这种情况下,只应删除2000帐户。我如何在代码中实现这一目标?
答案 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();