C#Linq GroupBy ==>类vs匿名类---结果不同

时间:2020-11-12 10:02:22

标签: c# linq

我有以下代码:

var rawGroupBEFORE = sqlRaw.GroupBy(x => new
{
    x.ID,
    x.P1,
    x.P2,
    x.P3,
    x.P4,
    x.P5,
    x.P6,
    x.P7,
    x.P8,              
}).ToList();

var rawGroup = sqlRaw.GroupBy(x => new RawDocument
{
    Id = x.ID,
    P1 = x.P1,
    P2 = x.P2,
    P3 = x.P3,
    P4 = x.P4,
    P5 = x.P5,
    P6 = x.P6,
    P7 = x.P7,
    P8 = x.P8,              
}).ToList();

rawGroupBEFORE 1个元素中的数据作为结果。在rawGroup中给了我2个元素...错误的分组。 我已经使用自动Visual Studio“创建缺少的属性”操作创建了RawDocument类。

有什么主意我为什么会出现这种行为?

1 个答案:

答案 0 :(得分:9)

最可能的解释是匿名类型使用value equality,而RawDocument使用reference equality。由于每个项目都会获得一个新的RawDocument对象,因此它们都不相等。

Implement Equality members代表RawDocument,或给GroupBy一个IEqualityComparer。

相关问题