LINQ中如何实现groupby
How to achieve groupby in LINQ
我对 LinQ 不是很熟悉,我有一个小问题(我认为)。基本上我将一个 xml 文件反序列化为以下项目的数组:
public string stringId{ get; set; }
public string sgent { get; set; }
public string status{ get; set; }
public string recallDate { get; set; }
public string product{ get; set; }
public string sendMethod{ get; set; }
public string campaign{ get; set; }
public string comment{ get; set; }
public string sgentId{ get; set; }
public string dateOfSell { get; set; }
目前我的列表如下所示
var model = from r in selling.sales
where r.sgentId == idFromLoginAction.ToString()
orderby r.dateOfSell
select r;
它有效,但我想要实现的是获取按 dateOfSell 属性分组的此项目的列表,以便稍后我可以在视图中以 Date 属性在每个相同日期只显示一次的方式显示它,并且在这个日期之下,我想显示 dateOfSell 属性是这个特定日期的所有其他属性的列表。
我很确定我可以用 LinQ 实现这种分组。我对吗 ?有可能吗,或者这是一个不好的方法?
下面我写了一个小草图来说明我的观点:
2014-01-08
Prop 1 Prop2 Prop3 prop4 ... etc
Prop 1 Prop2 Prop3 Prop4 ... etc
2014-01-07
Prop 1 Prop2 Prop3 prop4 ... etc
Prop 1 Prop2 Prop3 Prop4 ... etc
ETC ...
这样使用GroupBy
,在Select
之前这样做:
var model = from r in selling.sales
where r.sgentId == idFromLoginAction.ToString()
orderby r.dateOfSell
group r by r.dateOfSell into g
select new { DateOfSell = g.Key, Sales = g.ToList() };
var result = selling.sales.GroupBy(s => s.dateOfSell, (key, g) => new { SellDate = key, OtherValues = g.ToList() });
那么你可以这样做:
foreach(var item in result){
// Your key you grouped By
var selDate = item.SellDate;
// List of Other Items
var groupedItems = item.OtherValues;
}
看看@Devqon提到的link:Group by in LINQ
我对 LinQ 不是很熟悉,我有一个小问题(我认为)。基本上我将一个 xml 文件反序列化为以下项目的数组:
public string stringId{ get; set; }
public string sgent { get; set; }
public string status{ get; set; }
public string recallDate { get; set; }
public string product{ get; set; }
public string sendMethod{ get; set; }
public string campaign{ get; set; }
public string comment{ get; set; }
public string sgentId{ get; set; }
public string dateOfSell { get; set; }
目前我的列表如下所示
var model = from r in selling.sales
where r.sgentId == idFromLoginAction.ToString()
orderby r.dateOfSell
select r;
它有效,但我想要实现的是获取按 dateOfSell 属性分组的此项目的列表,以便稍后我可以在视图中以 Date 属性在每个相同日期只显示一次的方式显示它,并且在这个日期之下,我想显示 dateOfSell 属性是这个特定日期的所有其他属性的列表。
我很确定我可以用 LinQ 实现这种分组。我对吗 ?有可能吗,或者这是一个不好的方法? 下面我写了一个小草图来说明我的观点:
2014-01-08
Prop 1 Prop2 Prop3 prop4 ... etc
Prop 1 Prop2 Prop3 Prop4 ... etc
2014-01-07
Prop 1 Prop2 Prop3 prop4 ... etc
Prop 1 Prop2 Prop3 Prop4 ... etc
ETC ...
这样使用GroupBy
,在Select
之前这样做:
var model = from r in selling.sales
where r.sgentId == idFromLoginAction.ToString()
orderby r.dateOfSell
group r by r.dateOfSell into g
select new { DateOfSell = g.Key, Sales = g.ToList() };
var result = selling.sales.GroupBy(s => s.dateOfSell, (key, g) => new { SellDate = key, OtherValues = g.ToList() });
那么你可以这样做:
foreach(var item in result){
// Your key you grouped By
var selDate = item.SellDate;
// List of Other Items
var groupedItems = item.OtherValues;
}
看看@Devqon提到的link:Group by in LINQ