Chcę osiągnąć coś podobnego do this. Ale nie wiem, w jaki sposób mogę użyć tego rozwiązania.Podział kolekcji na części na podstawie stanu z LINQ?
Moja jednostka ma te właściwości
CustomerName
Date
SortOrder
Mam całą listę tego podmiotu. Co chcę zrobić, to grupa wszystkie te pozycje na liście <>, które mają kolejne SortOrder i sam Data i sam CustomerName
Przykład wejściowego
var inv = new List<Invoice>(){
new Invoice(){ CustomerName = "Abc" ,Date = DateTime.Today, SortOrder = 0},
new Invoice(){ CustomerName = "Abc" ,Date = DateTime.Today, SortOrder = 1},
new Invoice(){ CustomerName = "Abc" ,Date = DateTime.Today, SortOrder = 2},
new Invoice(){ CustomerName = "xyz" ,Date = DateTime.Today.Subtract(TimeSpan.FromDays(1)), SortOrder = 3},
new Invoice(){ CustomerName = "xyz" ,Date = DateTime.Today.Subtract(TimeSpan.FromDays(1)), SortOrder = 4},
new Invoice(){ CustomerName = "Abc" ,Date = DateTime.Today, SortOrder = 5},
new Invoice(){ CustomerName = "Abc" ,Date = DateTime.Today, SortOrder = 6}
};
Przykâadowa
var invGrouped = new List<List<Invoice>>
{
new List<Invoice>
{
new Invoice {CustomerName = "Abc", Date = DateTime.Today, SortOrder = 0},
new Invoice {CustomerName = "Abc", Date = DateTime.Today, SortOrder = 1},
new Invoice {CustomerName = "Abc", Date = DateTime.Today, SortOrder = 2}
},
new List<Invoice>
{
new Invoice {CustomerName = "xyz", Date = DateTime.Today.Subtract(TimeSpan.FromDays(1)), SortOrder = 3},
new Invoice {CustomerName = "xyz", Date = DateTime.Today.Subtract(TimeSpan.FromDays(1)), SortOrder = 4}
},
new List<Invoice>
{
new Invoice {CustomerName = "Abc", Date = DateTime.Today, SortOrder = 5},
new Invoice {CustomerName = "Abc", Date = DateTime.Today, SortOrder = 6}
}
};
UPDATE
Rozwiązanie inne niż LINQ również będzie wystarczające.
Byłoby to bardzo pomocne, jeśli można to małą próbkę danych, a także dokładnie to, czego oczekują, że dane wyglądają tak, jakby zostały zgrupowane. – diceguyd30
@ diceguyd30! Zaktualizowałem pytanie: – IsmailS
Dlaczego dwa dolne wiersze (z nazwą klienta "Abc" i DateTime of Today) nie znajdują się na tej samej liście co inne złożone przez klientów "Abc" złożone dzisiaj? –