【问题标题】:C# lambda expression with sub query带有子查询的 C# lambda 表达式
【发布时间】: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()

标签: c# sql lambda


【解决方案1】:

假设 tableName 是 IEnumerable<T>,其中 T 有成员 columnName1columnName2columnName2 是小数、整数、浮点数、长整数或双精度数:

tableName
   .Where(row => row.columnName2 == tableName.Max(row => row.columnName2))
   .Select(row => row.columnName1);

【讨论】:

    猜你喜欢
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    相关资源
    最近更新 更多