在LINQ中转换子查询

时间:2016-08-11 01:30:41

标签: c# sql asp.net linq

我在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中转换该查询。 谢谢你的回答

1 个答案:

答案 0 :(得分:0)

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

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;