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