如何从列表中的列表中获取区别并删除该(主)列表项?

时间:2012-12-25 20:51:20

标签: c# arrays list

我有一个List<List<string>>变量,我希望在List<string>中删除带有区别的string[0]。我怎样才能做到这一点?在这里,我向您展示我正在努力实现的目标。

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

谢谢,

2 个答案:

答案 0 :(得分:4)

您可以使用LINQ选择不同于第一项的子列表列表:

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

答案 1 :(得分:0)

您可以传递Distinct IEqualityComparer<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())