Разбить коллекцию на части в зависимости от условий с помощью LINQ?

Я хочу добиться чего-то похожего на это . Но я не знаю, как я могу использовать это решение.

Моя сущность имеет эти свойства

CustomerName
Date
SortOrder

У меня есть полный список этой сущности. Я хочу сгруппировать все те элементы в List , которые имеют последовательный SortOrder и такую ​​же Date и такую ​​же CustomerName

Пример ввода

  var inv = new List(){
    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}
  };

Пример вывода

  var invGrouped = new List>
   {
     new List
       {
         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
       {
         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
       {
         new Invoice {CustomerName = "Abc", Date = DateTime.Today, SortOrder = 5},
         new Invoice {CustomerName = "Abc", Date = DateTime.Today, SortOrder = 6}

       }
   };

ОБНОВЛЕНИЕ
Также будет достаточно решения, отличного от LINQ.

5
задан Community 23 May 2017 в 11:48
поделиться