我如何写一个存在的子查询使用多列在LINQ

本文关键字:LINQ 查询 何写一 存在 | 更新日期: 2023-09-27 18:13:54

我想写一个linq查询,类似于这个SQL:

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中做一个连接。但这样能行吗?我希望在我的列表中避免每个对象调用数据库

我如何写一个存在的子查询使用多列在LINQ

var q = from t1 in db.Table1
        from t2 in db.Table2.Where(x => x.ColA == t1.ColA && x.ColB == t1.ColB)
        select t1;

试试:

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;

OR没有Join

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