小编Bol*_*glu的帖子

LINQ Group使用匿名类型比它应该更好地工作

假设我有一个定义为的类:

public class DataHolder
{
    public string PropA { get; set; }
    public string PropB { get; set; }
    public string PropC { get; set; }
    public int PropD { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并且有一个DataHolder声明为:的数组的实例:

    var x=new DataHolder[]{
        new DataHolder(){PropA="A",PropB="X",PropC="J",PropD=1},
        new DataHolder(){PropA="A",PropB="Y",PropC="J",PropD=3},
        new DataHolder(){PropA="A",PropB="Y",PropC="J",PropD=5},
        new DataHolder(){PropA="B",PropB="X",PropC="K",PropD=7},
        new DataHolder(){PropA="B",PropB="Y",PropC="L",PropD=9},
        new DataHolder(){PropA="C",PropB="X",PropC="J",PropD=11},
        new DataHolder(){PropA="C",PropB="X",PropC="J",PropD=13},
        new DataHolder(){PropA="C",PropB="Y",PropC="J",PropD=15},
        new DataHolder(){PropA="C",PropB="Z",PropC="J",PropD=17}
    };
Run Code Online (Sandbox Code Playgroud)

我对它运行LINQ GroupBy查询,如下所示:

    var t = x.GroupBy(c => new { A = c.PropA, B = c.PropB, C = c.PropC })
Run Code Online (Sandbox Code Playgroud)

当我检查结果时,我发现t有7个元素,这是数组中不同的PropA,PropB,PropC组合的数量,这是我想要的效果(是的!).但后来我想,它实际上不应该起作用,因为匿名类型的每个新实例应该与其他实例不相等,并且t应该有9个元素. …

c# linq

3
推荐指数
2
解决办法
124
查看次数

标签 统计

c# ×1

linq ×1