我们说我有一张包含以下数据的表格:
Id | title | image | page
-------------------------
1 test a.jpg 1
2 test b.jpg 2
3 test 1 c.jpg 1
4 test 1 d.jpg 2
我如何按标题对数据进行分组并检索第一批结果。像这样:
Id | title | image | page
-------------------------
1 test a.jpg 1
3 test 1 c.jpg 1
到目前为止,我尝试过但没有运气的是:
var result = _db.Records.Select(r => new Records
{
Id = r.Id,
title = r.title,
image = r.image,
page = r.page
}).OrderByDescending(x => x.Id)
.GroupBy(x => x.title)
.Select(x => x.First()).AsQueryable();
我是以正确的方式来做这件事的吗?任何帮助表示赞赏。
答案 0 :(得分:1)
第一个选择似乎没有做任何事情。您已经拥有记录,并且您正在选择记录。
第二个Select也不需要。而不是致电x => x.First()
为什么不拨打First()
?或者我错过了什么?
var result = _db.Records
//.OrderByDescending(x => x.Id)
.GroupBy(x => x.title)
.First();
编辑:OrderBy正在做的工作被GroupBy
否定(有些)编辑2:以上只会获得第一组。所以x => x.First()是正确的:
var result = _db.Records
.GroupBy(x => x.title)
.Select(group => group.First());
答案 1 :(得分:1)
为什么要订购以及为什么要返回AsQueryable?这就是我所做的。如果必须返回可查询,则追加AsQueryable()仍然有效。
Records.GroupBy (r => r.Title)
.Select (r =>r.First ())
答案 2 :(得分:0)
var results
= _db.Records.GroupBy(
i => i.title,
(key, group) => group.First()
)
希望这有帮助