是否可以使用linq GroupBy一组值?

rec*_*ive 8 c# linq group-by hashset

我知道如何使用匿名类型按固定的值列表进行分组.我想要做的是按一组实际值进行分组.

例如,此表达式的结果为2.

new List<HashSet<int>> {
    new HashSet<int> { 4 },
    new HashSet<int> { 4 }
}.GroupBy (x => x).Count()
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法将这些集合放在同一个组中,以便结果为1.在python中,这将使用完成frozenset.

这样做最干净的方法是什么?

Ani*_*Ani 8

您可以使用静态HashSet<T>.CreateSetComparer方法来实现此目的.

回报价值

类型:System.Collections.Generic.IEqualityComparer>一个IEqualityComparer对象,可用于对HashSet对象进行深度相等测试.

new List<HashSet<int>> {
    new HashSet<int> { 4 },
    new HashSet<int> { 4 }
}.GroupBy (x => x, HashSet<int>.CreateSetComparer())
Run Code Online (Sandbox Code Playgroud)