0

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

表结构是这样的:

表 A
TableAID 列1 列 2

表 B 表
BID表 AID 列 3 列 4

所以在代码中我有:

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)));

有什么建议么?

提前致谢

4

1 回答 1

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;

我希望这有帮助。

于 2010-05-24T16:21:44.087 回答