首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Linq中选择column1的所有不同的最后记录和column2的order (不相应地工作)

在Linq中选择column1的所有不同的最后记录和column2的order (不相应地工作)
EN

Stack Overflow用户
提问于 2020-08-04 13:51:16
回答 1查看 73关注 0票数 3

所以我有张这样的桌子:

现在,我需要由ShortCode降序的不同的ID顺序。换句话说,不同的最后记录。如下所示:

所以我试了一下GroupBy:

代码语言:javascript
代码运行次数:0
运行
复制
var data = db.ShortCodes.GroupBy(x => x.ShortCode).Select(x => x.FirstOrDefault()).OrderByDescending(s=> s.ID);

这给了我独特的记录,但不是最后的记录,也不是由ID降序的:

现在我也尝试了像建议的here

代码语言:javascript
代码运行次数:0
运行
复制
var data = db.ShortCodeManager
               .GroupBy(s => s. ShortCode)
               .Select(g => g.First())
               .OrderByDescending(s => s.ID);

这给了我错误的The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.

因此,我修改了FirstOrDefault(),比如:

代码语言:javascript
代码运行次数:0
运行
复制
var data = db.ShortCodeManager
               .GroupBy(s => s. ShortCode)
               .Select(g => g.FirstOrDefault())
               .OrderByDescending(s => s.ID);

这也给了我独特的记录,但没有给我最后的记录:

所以我终于像建议的那样尝试了here

代码语言:javascript
代码运行次数:0
运行
复制
var data = db.ShortCodeManager.Where(a => a.ID > 0).GroupBy(x => x.ShortCode).OrderByDescending(grp => grp.Max(g => g.ID)).Select(a => a.FirstOrDefault());

同样,这给了我独特的记录,但不是最后的记录,也不是由ID降序的:

那么,如何在Linq中编写查询以获得我想要的结果呢?另外,我需要更多不同的最后记录,而不是由ID降序订购。如果有人也知道如何用原始SQL编写它,那么它也可能是有用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-04 14:00:02

这个LINQ查询应该适用于您的情况:

代码语言:javascript
代码运行次数:0
运行
复制
var result = db.ShortCodeManager
    .GroupBy(x => x.ShortCode)
    .Select(gr => new { Id = gr.Max(g => g.Id), ShortCode = gr.Key})
    .ToList();

编辑:

根据您的注释,您需要将匿名对象result转换为ShortCodeManagerModel类型,然后将其传递给您的视图。所以,就像这样:

代码语言:javascript
代码运行次数:0
运行
复制
var result = db.ShortCodeManager
    .GroupBy(x => x.ShortCode)
    .Select(gr => new { Id = gr.Max(g => g.Id), ShortCode = gr.Key})
    .ToList();

var model = result 
    .Select(x => new ShortCodeManagerModel { Id = x.Id, ShortCode = x.ShortCode })
    .ToList();

然后将model传递给您的视图。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63248372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档