在LINQ中转换子查询

本文关键字:查询 转换 LINQ | 更新日期: 2023-09-27 18:01:45

我在SQL中有这样的子查询

SELECT A.DOCID 
FROM mstdocs a, mstdocstats b 
WHERE a.DOCID = b.DOCID 
AND b.VID = '1' 
AND A.DOCID NOT IN (SELECT a.docid 
                    FROM mstdocs a, mstdocstats b 
                    WHERE a.DOCID = b.DOCID 
                    AND b.VID = '1' 
                    AND a.VTAID = '2') 
GROUP BY A.DOCID

如何在LINQ中转换该查询。谢谢你的回答

在LINQ中转换子查询

我想你可以把这个问题分成两部分。首先,您可以选择一个不在列表

var notInList = from a in db.mstdocs
                        join b in db.mstdocstats on a.DOCID equals b.DOCID
                        where a.VID == "1" && b.VTAID == "2"
                        select a.DOCID;

然后你可以使用这个列表来得到你想要的:

var result = from a in db.mstdocs
                     join b in db.mstdocstats on a.DOCID equals b.DOCID
                     where !notInList.Contains(a.DOCID) && b.VID == "1"
                     group a by a.DOCID into g
                     select g.Key;