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

标签: Linq SQLServer C#
发布时间: 2017/2/26 18:26:36
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想写类似于此 SQL linq 查询︰

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

除表 2 是我已经有以前从数据库对象列表。

我知道如何使用 contains () 来模拟 SQL"中子"使用数据库以外的对象列表中,当涉及一列︰

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

我想我可以做在 Linq 中的联接。但是,可以将执行好吗?我希望避免数据库调用每个对象在我的列表中。

解决方法 1:

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