Linq to sql Linq2Sql、GroupBy和返回特定对象
我有一个关键字列表Linq to sql Linq2Sql、GroupBy和返回特定对象,linq-to-sql,group-by,Linq To Sql,Group By,我有一个关键字列表 披萨(晚上10:13) 牛奶(晚上10:12) 披萨(晚上10:11) 披萨(晚上10:10) 牛奶(晚上10:09) 豆子(晚上10:08) 玉米(晚上10:07) 果汁(晚上10:06) 富(晚上10:05) 我想这样对他们进行分组(前5名,注意foo不在列表中): 比萨饼(3)(晚上10:13) 牛奶(2)(晚上10:12) 豆子(1)(晚上10:08) 玉米(1)(晚上10:07) 果汁(1)(晚上10:06) 所以基本上:在创建日期之后列出关键字,按关键字和
- 披萨(晚上10:13)
- 牛奶(晚上10:12)
- 披萨(晚上10:11)
- 披萨(晚上10:10)
- 牛奶(晚上10:09)
- 豆子(晚上10:08)
- 玉米(晚上10:07)
- 果汁(晚上10:06)
- 富(晚上10:05)
- 比萨饼(3)(晚上10:13)
- 牛奶(2)(晚上10:12)
- 豆子(1)(晚上10:08)
- 玉米(1)(晚上10:07)
- 果汁(1)(晚上10:06)
LatestSearch
更新
以以下查询结束:
var searches = db.Searches
.GroupBy(s => s.Keyword)
.Select(g => g.OrderByDescending(o => o.CreatedDate).First())
.OrderByDescending(o => o.CreatedDate)
.Take(5);
像这样:
table.Where(s => whatever)
.GroupBy(s => s.Keyword)
.Select(g => new {
Keyword = g.OrderByDescending(s => s.Date),
Count = g.Count(),
Date = g.Max(s => s.Date())
})
.OrderByDescending(s => s.Count)
.Take(5);
编辑:如果您只需要一个IEnumerable
,请编写以下内容:
table.Where(s => whatever)
.GroupBy(s => s.Keyword)
.OrderByDescending(g => g.Count())
.Select(g => g.First());
.Take(5);
创建日期之后的
是什么意思?我仍然不知道你的意思。谢谢你的回答,SLaks。我已经更新了我的问题。抱歉搞混了。看起来像我要找的!但如何将它们作为IEnumerable返回?是的,但我不想按Count()排序,但是.CreatedDate:-)