C# Linq到Sql从多个表中选择

C# Linq到Sql从多个表中选择,c#,linq-to-sql,predicate,C#,Linq To Sql,Predicate,我有一个关于使用Linq从C中的多个表中进行选择的问题 表结构如下所示: 表A 食疗 专栏1 专栏2 表B TableBID TableAID第3列第4列 因此,在代码中,我有: List<string> myList = new List{"Test1","Test2"}; var myView = MYDC.TableA.AsQueryAble(); 但是,如果我想将myView保留为TableA的可查询项,并且如果我想在第3列的TableB上使用where,它通过外键链接到T

我有一个关于使用Linq从C中的多个表中进行选择的问题

表结构如下所示:

表A 食疗 专栏1 专栏2

表B TableBID TableAID第3列第4列

因此,在代码中,我有:

List<string> myList = new List{"Test1","Test2"};
var myView = MYDC.TableA.AsQueryAble();
但是,如果我想将myView保留为TableA的可查询项,并且如果我想在第3列的TableB上使用where,它通过外键链接到TableA,我该怎么做呢

我尝试了以下方法,但没有成功:

myView = myView.Where(k=>myList.Contains(k.TableB.Select(kk=>kk.Column3)));
有什么建议吗


提前感谢

有几种方法可以做到这一点。以下是其中两个:

var q = (
    from b in MYDB.TableB
    where myList.Contains(b.Column3)
    select b.TableA).Distinct();

var q =
    from a in myView
    let bs = a.TableB.Where(b => myList.Contains(b.Column3))
    where bs.Any()
    select a;

我希望这能有所帮助。

什么叫“不成功”?当您尝试它时发生了什么?它说:委托'System.Func'不接受1个参数。我要指出,当您在可查询语句中看到Func与表达式时,通常意味着它在内存中运行谓词,而不是转换为数据库调用,因此,它经常否定可查询的好处,因为您返回整个记录集以执行谓词。谢谢,但我知道如何使用普通linq查询来实现这一点。但是使用谓词怎么样?
var q = (
    from b in MYDB.TableB
    where myList.Contains(b.Column3)
    select b.TableA).Distinct();

var q =
    from a in myView
    let bs = a.TableB.Where(b => myList.Contains(b.Column3))
    where bs.Any()
    select a;