如何在LINQ中使用多个列编写存在子查询?

时间:2015-09-21 22:53:55

标签: c# sql-server linq

我正在尝试编写类似于SQL的linq查询:

SELECT * FROM Table1
WHERE EXISTS (
    SELECT 1 FROM Table2
    WHERE Table1.ColA = Table2.ColA
    AND Table1.ColB = Table2.ColB
)

除了Table2之外,我之前已经从数据库中获得了一个对象列表。

我知道如何使用contains()来模拟SQL" IN SUBQUERY"在涉及一列时使用数据库外部的对象列表:

var query = from t1 in db.Table1
            where MyObjList.Select(o => o.Field1).Contains(t1.Col1)
            select t1;

我想我可以加入Linq。但那会表现好吗?我希望避免在列表中为每个对象调用数据库。

2 个答案:

答案 0 :(得分:3)

setVolume()

答案 1 :(得分:1)

试试这样:

var query = from t1 in db.Table1
            join t2 in db.Table2 on t1.ColA equals t2.ColA
            Where t1.ColB == t2.ColB
            Select t1;

或没有加入

var query = from t1 in db.Table1
            from t2 in db.Table2 
            Where t1.ColA == t2.ColA && t1.ColB == t2.ColB
            Select t1;