在枚举的可枚举上调用.Distinct()

Bob*_*son 3 c# linq

在我当前的LINQ查询结束时,我的数据形式为a IEnumerable<IEnumerable<int>>,有几个重复的组合.

例如:

{
  {5, 20}
  {5, 20}
  {10, 15}
}
Run Code Online (Sandbox Code Playgroud)

筛选这些内容的最佳方法是什么,以便每个集只显示一次?LINQ答案是理想的,所以我可以进一步链接它.

rec*_*ive 5

如果您创建一个序列相等比较器,如下所示:

class SequenceEqualityComparer<T> : IEqualityComparer<IEnumerable<T>> {
    public bool Equals(IEnumerable<T> a, IEnumerable<T> b) {
        if (a == null) return b == null;
        if (b == null) return false;
        return a.SequenceEqual(b);
    }

    public int GetHashCode(IEnumerable<T> val) {
        return val.Where(v => v != null)
                .Aggregate(0, (h, v) => h ^ v.GetHashCode());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,你可以打电话.Distinct(new SequenceEqualityComparer<int>()).