【发布时间】:2010-05-24 14:33:03
【问题描述】:
我有一个关于使用 Linq 从 C# 中的多个表中进行选择的问题。
表结构是这样的:
表 A
桌辅助
第 1 列
第 2 列
表 B
TableBID TableAID Column3 Column4
所以在代码中我有:
List<string> myList = new List{"Test1","Test2"};
var myView = MYDC.TableA.AsQueryAble();
如果我想使用 Column1 上的 where 从表 A 中选择记录,我会简单地使用:
myView = myView.Where(k=>myList.Contains(k.Column1));
但是,如果我想将 myView 保留为 TableA 的可查询项,并且如果我想在 Column3 上使用 TableB 上的 where,它通过外键链接到 TableA,我该怎么做?
我尝试了以下但没有成功:
myView = myView.Where(k=>myList.Contains(k.TableB.Select(kk=>kk.Column3)));
有什么建议吗?
提前致谢
【问题讨论】:
-
“没有成功”是什么意思?当你尝试它时发生了什么?
-
它说:Delegate 'System.Func
' 不接受 1 个参数 -
我要指出的是,当您在可查询语句中看到
Func(与Expression<Func<>>相比)时,通常意味着它正在运行谓词 in memory 而不是而不是转换为数据库调用,因此它通常会否定可查询的好处(因为您要返回整个记录集以执行谓词)。
标签: c# linq-to-sql predicate