Linq分组问题

时间:2011-03-03 23:12:09

标签: linq

我在集合中有以下对象:

交易:
Type =“Widget”
日期=“3/1/2011”
Name =“Foo”

交易:
Type =“Widget”
日期=“3/4/2011”
名称=“酒吧”

交易:
Type =“Gadget”
日期=“2011年3月2日”
名字=“Baz”

交易:
Type =“Gizmo”
日期=“3/1/2011”
姓名=“谁”

交易:
Type =“Gizmo”
日期=“2011年3月2日”
名称=“什么”

交易:
Type =“Gizmo”
日期=“2011年3月6日”
名称=“何时”

我希望最终得到以下内容,按类型分组。如果有多个,则按日期按时间顺序返回第一个。

交易:
Type =“Widget”
日期=“3/1/2011”
Name =“Foo”

交易:
Type =“Gadget”
日期=“2011年3月2日”
名字=“Baz”

交易:
Type =“Gizmo”
日期=“3/1/2011”
姓名=“谁”

3 个答案:

答案 0 :(得分:3)

以流利的形式:

var groups = transactions.GroupBy(t => t.Type)
                         .Select(g => g.OrderBy(t => t.Date).First());

在查询表格中:

var groups = from t in transactions
             group t by t.Type into g 
             select g.OrderBy(t => t.Date).First();

答案 1 :(得分:1)

这应该有效:

var groupedTransactions = transactions.GroupBy(t => t.Type)
                                      .Select(g => g.OrderBy(t => t.Date).FirstOrDefault());

答案 2 :(得分:1)

类似

var q =
from t in MyTypes
group t by t.Type into g
select g.OrderBy(t => t.Date).First();