2013-07-31 75 views
0

我有一個擁有兩個表的公共信息的主表。另外我有兩個表格,每個表格都有特定的信息。最後,我有一張最後一張與這兩張副桌有關的桌子。可能的是,這個最後一個表與這個輔助表中的一個或兩個有關。如何在這種情況下做一個工會或「或」?

的模型是:

  • MainTable(IDMainTable,名稱...)
  • Secondary01(IDSecondary01,IDMaintable,名稱....)
  • Secondary02(IDSecondary02,IDMainTable名稱... 。)
  • 數據(IDDATA,名稱...)
  • 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到實體?

謝謝。

回答

1

您可以使用Enumerable.Union方法。

通過使用默認相等 比較器生成兩個序列的集合並。

像:

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 ...); 
+0

而這樣一來使一個或兩個數據庫查詢?我想訪問一次數據庫。 –

+0

@ÁlvaroGarcía,不要迭代查詢,只需使用'Union'形式化查詢,並在迭代時應該到數據庫一次。 – Habib

+0

@ÁlvaroGarcía,剛剛添加了一段代碼片段來描述我的意思。 – Habib

相關問題