我有以下代码:
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类。
有什么主意我为什么会出现这种行为?
答案 0 :(得分:9)
最可能的解释是匿名类型使用value equality,而RawDocument
使用reference equality。由于每个项目都会获得一个新的RawDocument
对象,因此它们都不相等。
Implement Equality members代表RawDocument
,或给GroupBy一个IEqualityComparer。