gpt4 book ai didi

c# - 扩展相关子查询以在 LINQ 中包含另一个查询

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:58 24 4
gpt4 key购买 nike

我正在尝试扩展相关子查询以在 LINQ 中包含另一个查询。在 SQL 中,这就是查询。

SELECT V.Car_ID
FROM VEHICLES V, AGREEMENTS A, AGREEMENTS A1
WHERE A.Car_ID = V.Car_ID
AND enDate >= A.Hire_Start_Date
AND stDate <= A.Hire_End_Date
AND A1.CAR_ID = V.CAR_ID
AND location = A1.Return_Location
AND A1.Return_date =
(SELECT MAX(A2.Return_Date)
FROM AGREEMENT A2
WHERE A2.VEHICLE_ID = V.VEHICLE_ID
AND A2.Return_Date < stDate)**

在一些帮助下,我已经查询了车辆是否有协议(protocol),但我似乎无法扩展它以检查 AGREEMENT 返回位置是否与搜索位置匹配。到目前为止,这是我的代码。

var cars = from v in db.VEHICLEs
where !db.AGREEMENTs.Any(a => (a.CAR_ID == v.CAR_ID
&& a.STATUS_OPEN == true
&& enDate >= a.HIRE_START_DATE
&& strtDate <= a.HIRE_END_DATE))
select v;

我的工作 LINQ 查询中缺少 sql 查询的以下部分。

AND A1.CAR_ID = V.CAR_ID
AND location = A1.Return_Location
AND A1.Return_date =
(SELECT MAX(A2.Return_Date)
FROM AGREEMENT A2
WHERE A2.VEHICLE_ID = V.VEHICLE_ID
AND A2.Return_Date < stDate)**

如有任何帮助,我们将不胜感激。

最佳答案

您的 Sql 查询是一个内连接,因此在 Linq 中您可以:

var cars =  from v in db.VEHICLEs
from a in db.AGREEMENTs
from a1 in db.AGREEMENTs
where a.CAR_ID == v.CAR_ID
&& enDate >= a.HIRE_START_DATE
&& strtDate <= a.HIRE_END_DATE
&& a1.CAR_ID == v.CAR_ID
&& location == a1.RETURN_LOCATION
&& a1.RETURN_DATE == db.AGREEMENTs
.Where(a2 => a2.VEHICLE_ID == v.VEHICLE_ID)
.Max(a2 => a2.RETURN_DATE)
select v.CAR_ID;

要选择其他字段,您可以select new { CarId = v.CAR_ID, ... }

关于c# - 扩展相关子查询以在 LINQ 中包含另一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50197792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com