如何从列表中的列表中获取差异,并删除该(主)列表项

本文关键字:列表 删除 获取 | 更新日期: 2023-09-27 17:49:26

我有一个List<List<string>>变量,我想删除string[0]中具有差异的List<string>。我该怎么做呢?下面我将向您展示我想要实现的目标。

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

谢谢,

如何从列表中的列表中获取差异,并删除该(主)列表项

您可以使用LINQ来选择由第一项区分的子列表:

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

您可以通过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())