[英]how to yield an anonymous class in IEnumerable.GroupBy<T> “on the fly” (without enumerating result) in C# LINQ?
[英]C# Linq GroupBy ==> Class vs Anonymous class --- different result
我有以下代碼:
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。
任何想法為什么我應該得到這種行為?
最可能的解釋是匿名類型使用值相等,而RawDocument
使用引用相等。 由於每個項目都將獲得一個新的RawDocument
對象,因此它們之間不會彼此相等。
為RawDocument
實現 Equality 成員,或者給 GroupBy 一個 IEqualityComparer。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.