c# - 如何使用 Entity Framework 根据最大版本选择多条记录

标签 c# sql entity-framework linq

我有这样的记录

id  name     number version
---------------------------
1   NewYork     1     1 
2   LosAngeles  1     2 
3   Seatle      1     3
4   Toronto     2     1
5   Ottawa      2     2

我只想选择相同编号内版本最高的记录

所以我写了这样的查询

SELECT * 
FROM city c 
WHERE c.[version] = (SELECT Max([version])
                     FROM [city] c2 
                     WHERE c2.number = c.number)

它会返回

id  name     number version      
---------------------------
3   Seatle      1     3
5   Ottawa      2     2

我如何使用 Entity Framework 在 linq 中编写它?

db.cities.where(c => c.version == (????))

我不知道 Entity Framework 如何为此工作。

最佳答案

使用 GroupBynumber 分组然后 OrderBy最高纪录version :

var result = db.cities.GroupBy(item => item.number)
                      .Select(grouping => grouping.OrderByDescending(item => item.version)
                                                  .First());

关于c# - 如何使用 Entity Framework 根据最大版本选择多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43619364/

相关文章:

mysql - 连接字符串错误。无法找到请求的 .Net Framework 数据提供程序

c# - TFS 构建不同项目中同一程序集的多个版本的问题

mysql - 何时使用 SQL 数据库中什么类型的表关系

asp.net-mvc - 种子 MVC5 Entity Framework 6 中的无效登录尝试

SQL Server ROUND() 不适用于以 1 结尾的 FLOAT

sql - 使用oracle plsql触发器从生日计算年龄并将年龄插入表中

c# - 在 Entity Framework 中为本地主机连接 SQL Server 字符串

c# - 我应该创建并重用 AmazonSimpleEmailServiceClient 作为单例吗?

c# - 在 Visual Studio 2012 中折叠所有 #region

c# - 在键盘事件中使用 CancellationToken 调用 Task.Delay 时出现 TaskCanceledException