Можно ли GroupBy в LINQ, используя свойство коллекции?
например.
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;}
}
В этом примере я бы надеялся на две группы:
Key: List () {"one", "two"} Value: t1, t2
Key: List () {"one", " three "} Значение: t3
Насколько я понимаю, анонимные типы сравниваются не по ссылке, а путем сравнения равенства их общедоступных свойств.
Однако фактический результат состоит из трех групп:
Ключ: List () {"один", "два"} Значение: t1
Ключ: List () {"один", "два"} Значение : t2
Ключ: List () {"один", "три"} Значение: t3
Если это невозможно, есть ли способ получить желаемый результат?
Надеюсь, это ясно объяснил. ..