C# Linq到Sql从多个表中选择
我有一个关于使用Linq从C中的多个表中进行选择的问题 表结构如下所示: 表A 食疗 专栏1 专栏2 表B TableBID TableAID第3列第4列 因此,在代码中,我有: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
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;