我在两个表之间运行 LINQ 查询并返回不匹配的答案集时遇到问题。
TB_AvailableProducts -Prod_ID -姓名 …… TB_Purchases -Cust_ID -Prod_ID
有没有办法通过使用 1 个 LINQ 查询来获取客户尚未购买的所有不同产品,或者我是否必须进行两个单独的查询,1 个用于所有产品,1 个用于购买的产品,然后比较两者?
我在两个表之间运行 LINQ 查询并返回不匹配的答案集时遇到问题。
TB_AvailableProducts -Prod_ID -姓名 …… TB_Purchases -Cust_ID -Prod_ID
有没有办法通过使用 1 个 LINQ 查询来获取客户尚未购买的所有不同产品,或者我是否必须进行两个单独的查询,1 个用于所有产品,1 个用于购买的产品,然后比较两者?
此查询将返回购买表中没有相关记录的所有产品。
int customerID = 1;
var query = from ap in context.TB_AvailableProducts
join p in context.TB_Purchases.Where(x => x.Cust_ID == customerID)
on ap.Prod_ID equals p.Prod_ID into g
where !g.Any()
select ap;
Distinct
如果您的产品表中没有重复的记录,我认为您不需要在这里。
生成的 SQL 查询将如下所示:
SELECT ap.Prod_ID, ap.Name
FROM TB_AvailableProducts AS ap
WHERE NOT EXISTS (SELECT
1 AS C1
FROM TB_Purchases AS p
WHERE (1 = p.Cust_ID) AND (ap.Prod_ID = p.Prod_ID)
)