【发布时间】:2020-01-07 21:00:48
【问题描述】:
我需要将以下 SQL 语句转换为 lambda 表达式,以便我的 C# 应用程序可以使用实体框架访问数据。我正在努力在 lambda 表达式中实现子查询。 SQL语句是
SELECT columnName1
FROM tableName
WHERE columnName2 = (SELECT MAX(columnName2) FROM tableName)
在 lambda 表达式中,我对 .Select() 和 .First() 很熟悉,但是当 .Where() 需要引用子查询时,它的语法并不完全正确。
【问题讨论】:
-
您应该发布您尝试编写的 C#。
-
您可以在
columnName2上订购而不是子查询,然后像tableName.OrderByDescending(x => x.columnName2).FirstOrDefault()一样取第一行 -
@juharr 如果有多个记录具有
columnName2的最大值怎么办? -
@user1538301 是的,它还需要一个 GroupBy
tableName.GroupBy(x => x.columnName2).OrderByDescending(g => g.Key).FirstOrDefault()