【发布时间】:2011-11-15 15:12:16
【问题描述】:
是否可以在 LINQ 中使用集合属性进行 GroupBy?
例如
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;}
}
在这个例子中,我希望有两组:
键:List() { "one", "two" } 值:t1, t2
键:List() { "one", "three" } 值:t3
我的理解是,匿名类型的比较不是通过引用,而是通过比较其公共属性的相等性。
但实际结果是三组:
键:List() { "one", "two" } 值:t1
键:List() { "one", "two" } 值:t2
键:List() { "one", "three" } 值:t3
如果这不可能,有没有办法得到我想要的结果?
希望能解释清楚...
【问题讨论】:
标签: c# linq linq-to-objects