是否有可能使用集合属性在LINQ中GroupBy?LINQ GroupBy collection
例如
void Main()
{
var t1 = new Test() { Children = new List<string>() { "one", "two" } };
var t2 = new Test() { Children = new List<string>() { "one", "two" } };
var t3 = new Test() { Children = new List<string>() { "one", "three" } };
var tests = new List<Test>() { t1, t2, t3 };
var anon = from t in tests
select new
{
Children = t.Children
};
anon.GroupBy(t => t.Children).Dump();
}
public class Test
{
public List<string> Children {get;set;}
}
在这个例子中,我希望为两组:
键:列表(){ “一”, “二”}值:T1,T2
重点:列表(){“one”,“three”} Value:t3
我的理解是匿名类型不是通过引用进行比较,而是通过比较其公共属性上的相等性。
但是,实际结果是三组:
键:列表(){ “一”, “二”}值:T1
键:列表(){ “一” 字, “二”}值:T2
键:列表(){“一”,“三化”}值:T3
如果这是不可能的,是有办法得到我想要的结果?
有希望解释清楚...
谢谢 - 我明白(我的代码示例是从我真正的问题简化了)。请参阅我的修改后的代码示例 – TheNextman
我已经更新了我的答案以适用于您的现有代码。请看看它。它也不需要自定义的'IEqualityComparer'。 – doctorless
如果散列码碰巧是相同的,这会产生非常奇怪的结果。 – Caramiriel