我有一個對象列表(exobject在下面的代碼示例中),每個對象具有SomeId,AnotherId,SomeOtherId和Timestamp。該列表可能具有重複條目,每個記錄具有不同的時間戳。 我想用舊時間戳刪除這個對象的所有重複項,只保留那些最新的。根據C#中的條件刪除列表<T>中的重複項
樣本對象:
SomeId AnotherId SomeOtherId Timestamp
1 2 1 10
1 2 1 20
1 3 2 30
2 3 4 40
1 3 2 50
我的要求清單應
1,2,1,20 and 1,3,2,50 and 2,3,4,40.
我在C#中一種非常原始的實現也這樣做。
for (int i = 0; i < exObject.Count - 1; i++)
{
for (int j = i + 1; j < exObject.Count - 1; j++)
{
if (exObject[i].SomeId == exObject[j].SomeId && exObject[i].AnotherId == exObject[j].AnotherId && exObject[i].SomeOtherId == exObject[j].SomeOtherId)
{
if (exObject[i].TimeStamp < exObject[j].TimeStamp)
exObject[i].TimeStamp = exObject[j].TimeStamp;
exObject.Remove(exObject[j]);
}
}
}
我想知道是否有一個更優雅的和更好的方式來做到這一點,或者如果有一個lambda我可以用它來實現這一目標。
你不想使用exObject.Distinct()? – Damirchi
我正在嘗試不同的方法。 – yazz