¿Es posible agrupar en LINQ, utilizando una propiedad de colección?Colección LINQ GroupBy
p. Ej.
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;}
}
En este ejemplo, yo esperaría para dos grupos:
Clave: Lista() { "uno", "dos"} Valor: t1, t2
Clave: Lista() {"one", "three"} Valor: t3
Tengo entendido que los tipos anónimos no se comparan por referencia, sino comparando la igualdad en sus propiedades públicas.
Sin embargo, el resultado real es tres grupos:
Clave: Lista() { "uno", "dos"} Valor: t1
Clave: Lista() { "uno", "dos"} Valor: t2
clave: Lista() { "uno", "tres"} Valor: t3
Si esto no es posible, ¿hay una manera de conseguir el resultado que quiero ?
suerte explicó esto claramente ...
Gracias - Entiendo eso (mi ejemplo de código se simplificó de mi problema real). Por favor, consulte mi código modificado muestra – TheNextman
He actualizado mi respuesta para trabajar con su código existente. Por favor, échale un vistazo. Tampoco requiere un 'IEqualityComparer' personalizado. – doctorless
Esto genera resultados muy extraños si el código hash es el mismo. – Caramiriel