在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
希望我表述清楚了...
IEqualityComparer
,比较两个字符串列表中每个成员的相等性。然后将其作为第二个参数传递给GroupBy
。 - wsanville