0

2 つのテーブルの共通情報を持つメイン テーブルがあります。また、各タイプの特定の情報を含む 2 つのテーブルがあります。最後に、この 2 つのセカンダリ テーブルのいずれかと関係のある最後のテーブルがあります。この最後のテーブルは、このセカンダリ テーブルの 1 つまたは両方と関係がある可能性があります。

モデルは次のとおりです。

  • MainTable(IDMainTable, 名前...)
  • Secondary01(IDSecondary01、IDMaintable、名前....)
  • Secondary02(IDSecondary02、IDMainTable 名....)
  • データ(IDデータ、名前...)
  • DataRelationship(IDData、IDSecondary01、IDSecondary02)

セカンダリテーブルのいずれかがデータと関係しているメインテーブルのすべてのレジスタを取得したいと思います。IDData を条件として持っています。

SQL では、次のようになります。

select * from Maintable, Secondary01, DataRelationship
where MainTable.IDMainTable = Secondary01.IDMainTable
and Secondary01.IDSecondary01 = DataRelationship.IDSecondary01
and DataRelationship.IDData = 1234

UNION
select * from Maintable, Secondary02, DataRelationship
where MainTable.IDMainTable = Secondary02.IDMainTable
and Secondary02.IDSecondary02 = DataRelationship.IDSecondary02
and DataRelationship.IDData = 1234

拡張メソッドまたはエンティティへの linq を使用してこのクエリを実行するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

1

メソッドを使用できますEnumerable.Union

デフォルトの等値比較子を使用して、2 つのシーケンスの和集合を生成します。

お気に入り:

var query = (from t in db.Maintable
            from r in db.Secondary02
            //.....your rest of query
            select ...)
            .Union
            (from t in db.Maintable
            from r in db.Secondary02
            //.....your rest of query
            select ...);
于 2013-07-31T17:24:27.970 に答える