我想实现类似于this的操作。但我不知道我能以何种方式使用该解决方案。根据LINQ的条件将一个集合拆分成几部分?
我的实体具有这些属性
CustomerName
Date
SortOrder
我有这个实体的完整列表。我想要做的是,组列表<所有这些项目>具有连续SortOrder的和同日期和同客户名称
例输入
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}
};
示例输出
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
非LINQ解决方案也足够了。
这将极大地帮助,如果你能有一个小数据样本,以及你希望这些数据到底是什么看起来像一旦它被分组。 – diceguyd30 2010-10-26 12:17:51
@ diceguyd30!我已更新问题 – IsmailS 2010-10-26 12:37:28
为什么现在放置在与其他客户“Abc”订单相同的列表中的两个底行(CustomerName为“Abc”和DateTime为Today)? – 2010-10-26 12:42:34