2011-03-30 147 views
2

我有一個像這樣的查詢,我想要聯合這兩個查詢。但是聯合條件是兩個表的結果都必須具有相同的列名,所以必須檢索GroupName,但在此查詢中必須將其替換爲Type1。列別名LINQ查詢

var vTLst = (from t in db.Types select t.Type1).Union 
      (from g in db.Groups select g.GroupName).ToList().Distinct(); 

幫我請...

+0

它應該工作,你得到任何錯誤?什麼樣的列類型是'Type1'和'GroupName'? – 2011-03-30 06:33:10

+0

請注意:爲了提高效率,在將結果發送給客戶端之前,應該在'.ToList()'之前運行'.Distinct()'以讓數據庫執行'Distinct'。 – 2011-03-30 06:35:17

回答

0

這是不對的,如果t.Type1g.GroupName是列和相同的輸入查詢內容應該工作。結果將只是IQueryable<string>或您擁有的任何列類型,不包含名稱或任何類型的匿名類型。

如果您的查詢具有更多列或匿名類型,則可以使用列別名。

var vTLst = (from t in db.Types select new {Col1 = t.Type1, Col2 = t.Type2}).Union 
      (from g in db.Groups select new {Col1 = g.GroupName, Col2 = g.Col2}) 
      .ToList().Distinct(); 

如果你的問題是,列屬於同一類型的不是你可以將它們轉換爲相同類型

var vTLst = (from t in db.Types select t.Type1.ToString()).Union 
      (from g in db.Groups select g.GroupName.ToString()).ToList().Distinct(); 
+0

SELECT Type1 FROM Types UNION SELECT DISTINCT GroupName AS Type1 FROM Groups這是我的查詢,在查詢分析器中正常工作。您可以將其轉換爲LINQ Query。 – 2011-03-30 06:29:30