sql - 如何在 Linq to Sql 的子查询中选择 MAX

标签 sql linq linq-to-sql

给定以下数据,如何使用 LINQ 为每一项仅选择最新版本?

ItemId, Version
===================
A, 1
A, 2
A, 3
B, 8
B, 9,
C, 10
C, 11

期望的结果是:

A, 3
B, 9
C, 11

在 TSQL 中,我会这样做:

SELECT * FROM MyTable AS Tbl1

WHERE Tbl1.Version = 

(SELECT MAX(Version) 
FROM MyTable 
WHERE MyTable.ItemId = Tbl1.ItemId)

最佳答案

我会选择类似的东西:

MyTable
.GroupBy(row => row.ItemId)
.Select(grouping => 
    new
    {   
        ItemId = grouping.Key, 
        Version = grouping.Max(row => row.Version),
    });

编辑:修复了错误的 SQL 输出。

关于sql - 如何在 Linq to Sql 的子查询中选择 MAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681541/

相关文章:

MySQL ROUND() 计算错误

sql - 来自单个更新 SQL 语句的多行更新 SQL 触发器

c# - LINQ To Entities Include + Where 方法

c# - Linq中的 "SELECT SYSTEM_USER"相当于什么

c# - LINQ to Entities - 实现此目的的最佳方法?

mysql - 从 MySQL 中提取所有 JSON 键

c# - 如何在 LINQ 中进行外部连接?

c# - Linq 数组列表顺序更改

c# - 检查列表中的字符串数组是否包含另一个列表中的字符串,反之亦然

c# - 从 Linq 查询中选择多列