2012-12-25 25 views
4

我有一個List<List<string>>變量,我想刪除與string[0]區別List<string>。我怎樣才能做到這一點?在這裏,我向你展示了我想要達到的目標。如何從列表中的列表中獲取區別並刪除該(主)listitem?

0, 1, 2, 
    +--+--+--+ 
0, |a |34|st| 
    +--+--+--+ 
1, |a |67|it| Delete this row because a is an duplicate. 
    +--+--+--+ 
2, |b |89|st| 
    +--+--+--+ 

感謝,

+0

如何許多行你認爲這是你可以擁有的最大值(只是爲了查看它是否可以使用內存或其他o用於保存臨時數據) – balexandre

+0

200,最大值。 –

回答

4

您可以使用LINQ來選擇子表的第一項不同的列表:

var result = listOflists.GroupBy(l => l[0]) 
         .Select(g => g.First()) 
         .ToList(); 
+1

謝謝!它看起來很棒:D –

0

您可以通過DistinctIEqualityComparer<T>,所以:

class FirstItemComparer : IEqualityComparer<List<string>> { 
    public bool Equals(List<string> a, List<string> b) { 
     return a[0] == b[0]; 
    } 

    public int GetHashCode(List<string> l) { 
     return l[0].GetHashCode(); 
    } 
} 
... 
items.Distinct(new FirstItemComparer())