0

Linq を使用して C# で複数のテーブルから選択することについて質問があります。

テーブル構造は次のようになります。

表 A
TableAID 列 1 列 2

TABLE 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 のクエリ可能として保持したい場合、および外部キーで TableA にリンクされている Column3 の TableB の where を使用したい場合は、どうすればよいでしょうか?

次のことを試しましたが、成功しませんでした:

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

助言がありますか?

前もって感謝します

4

1 に答える 1

0

これにはいくつかの方法があります。そのうちの2つは次のとおりです。

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 に答える