我有帳戶的列表列表中刪除一些重複如下:從對象給定的條件
Accounts ID
1000 123
1000 123
1000 456
2000 789
2000 789
我想,如果有在ID列一個帳戶沒有多個ID,以便移除重複的所有出現。在這種情況下,只有帳戶2000應該被刪除。我如何在代碼中實現這一點?
我有帳戶的列表列表中刪除一些重複如下:從對象給定的條件
Accounts ID
1000 123
1000 123
1000 456
2000 789
2000 789
我想,如果有在ID列一個帳戶沒有多個ID,以便移除重複的所有出現。在這種情況下,只有帳戶2000應該被刪除。我如何在代碼中實現這一點?
除了鮮明,您還可以使用組通過(有時執行速度也更快處理更大的數據):
lstAccount= lstAccount.GroupBy(x => new {x.ID})
.Select(x => x.First()).ToList();
您可以通過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();
最好使用'.Skip(1).Any()'而不是'.Count()> 1'來防止組的完整迭代。 – Enigmativity
感謝@Enigmativity,忘記了'.Distinct()中的延遲執行 – Slai
.Distinct()... – raven
不完全確定我明白。 2000年的賬戶都應該被移除,但是所有的三千個賬戶都應該保留? – smead
是的,這個想法。賬戶1000應該保留,因爲它們與多個ID相關聯 – User11040