W kółko napotykam ten problem: jak pogrupować listę obiektów według listy innych obiektów?Jak grupować według listy elementów?
Mam listę obiektów typu A
, a każdy z tych obiektów ma właściwość (można nazwać ją ListProp
), która również jest listą. ListProp
ma elementy typu B
. Istnieje wiele elementów typu A
o identycznych B
-obiektach w ListProp
, ale odwołanie do właściwości właściwości różni się od elementu do elementu. Jak pogrupować te A
-obiekty w najszybszy sposób, w którym obiekty w ListProp
są identyczne?
Przykładowy kod:
class Program
{
static void Main(string[] args)
{
var exampleList = new List<A>
{
// Should be in first group
new A { ListProp = new List<B>
{
new B { Prop = new C { Number = 0 }},
new B { Prop = new C { Number = 1 }}
}},
// Should be in first group
new A { ListProp = new List<B>
{
new B { Prop = new C { Number = 0 }},
new B { Prop = new C { Number = 1 }}
}},
// Should be in second group
new A { ListProp = new List<B>
{
new B { Prop = new C { Number = 0 }},
new B { Prop = new C { Number = 1 }},
new B { Prop = new C { Number = 1 }}
}},
// Should be in third group
new A { ListProp = new List<B>
{
new B { Prop = new C { Number = 0 }},
new B { Prop = new C { Number = 0 }}
}}
};
// Doesn't work because the reference of ListProp is always different
var groupedExampleList = exampleList.GroupBy(x => x.ListProp);
}
}
class C
{
public int Number { get; set; }
public override bool Equals(object o)
{
if (o is C)
return Number.Equals(((C)o).Number);
else
return false;
}
}
class B
{
public C Prop { get; set; }
}
class A
{
public IList<B> ListProp { get; set; }
}
Dlaczego ostatni powinien być w trzeciej grupie? Powinien być na początku, czy nie powinienem? – abatishchev
Ponieważ liczba elementów powinna być taka sama jak również. 0,1! = 0,1,1 – germanSharper
OK, który był niewłaściwą edycją. Wyczyść teraz. – abatishchev