我正在尝试研究如何将下面的脚本从 SQL 转换为 LINQ。欢迎任何帮助。
SELECT *
FROM
[tableName]
WHERE
[MyDate] IN
(SELECT
MAX([MyDate])
FROM
[tableName]
GROUP BY
[MyID])
我找不到“IN”子句部分的等效项。这个论坛上存在一些问题,但没有一个涉及选择日期时间。
提前致谢。
您可以使用“.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 被触发时构造查询,因此您应该获得合理的性能。
我认为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())