Linq to Sql从多个表中选择

时间:2010-05-24 14:33:04

标签: c# linq-to-sql predicate

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

表结构如下:

表A TableAID 列1 列2

表B.
TableBID TableAID Column3 Column4

所以在代码中我有:

List<string> myList = new List{"Test1","Test2"};
var myView = MYDC.TableA.AsQueryAble();

如果我想使用Column1上的位置从表A中选择记录,我只需使用:

myView = myView.Where(k=>myList.Contains(k.Column1));

但是如果我想将myView保存为可查询的TableA,并且如果我想在Column3上的TableB上使用哪个地方,那么使用外键链接到TableA,我该怎么做?

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

myView = myView.Where(k=>myList.Contains(k.TableB.Select(kk=>kk.Column3)));

有什么建议吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

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

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;

我希望这会有所帮助。