1

我正在尝试研究如何将下面的脚本从 SQL 转换为 LINQ。欢迎任何帮助。

SELECT *
FROM
    [tableName]
WHERE
[MyDate] IN
    (SELECT
        MAX([MyDate])
   FROM
      [tableName]
   GROUP BY
      [MyID])

我找不到“IN”子句部分的等效项。这个论坛上存在一些问题,但没有一个涉及选择日期时间。

提前致谢。

4

2 回答 2

1

您可以使用“.Contains(..)”函数:例如

var itemQuery = from cartItems in db.SalesOrderDetails
              where cartItems.SalesOrderID == 75144
              select cartItems.ProductID;

var myProducts = from p in db.Products
                where itemQuery.Contains(p.ProductID)
                select p;

虽然看起来像 2 次往返,但由于 LINQ 仅在 IEnumerable 被触发时构造查询,因此您应该获得合理的性能。

于 2012-05-10T16:22:21.960 回答
0

我认为Any()这是您正在寻找的:

var result = tableName.Where(x => 
                (from t in tableName
                group t by t.MyID into g
                where g.Max(y => y.MyDate) == x.MyDate
                select 1).Any())
于 2012-05-10T16:30:49.757 回答