2012-12-10 56 views
1

我想要實現的是多個表中的字符串列表。我目前有一個帶有2個子表的ParentTable的簡單數據庫結構(假設Child1 & Child2)。 Child1 & Child2有一個名爲Name的類型爲nvarchar(50)的列。目前,我可以執行多個查詢來實現字符串的一個列表:Linq從多個表中選擇相同的數據類型

var myList = new List<string>(); 
myList.AddRange(Child1.Select(c1 => c1.Name)); 
myList.AddRange(Child2.Select(c2 => c2.Name)); 

OR

var myList = new List<string>(); 
myList.AddRange(ParentTable.SelectMany(x => x.Child1.Select (c1 => c1.Name))); 
myList.AddRange(ParentTable.SelectMany(x => x.Child2.Select (c2 => c2.Name))); 

我最終的問題是,它是否是可能的,即使鞏固它分解成1個查詢,這意味着使用父表?

回答

3

你只需要使用Concat操作:

var results = Child1.Select(c1 => c1.Name) 
       .Concat(Child2.Select(c2 => c2.Name)).ToList(); 
0

您可以使用Union運營商,同時也消除了重複你:

var q = Child1.Select(c1 => c1.Name).Union(Child2.Select(c2 => c.Name)).ToList(); 
+1

這是假設他*想*刪除重複。他之前沒有刪除重複的內容,他希望功能上相同的代碼只需往返數據庫而不是兩次。 – Servy

+0

@Servy,如果他想保留重複項,那麼顯然'Concat'和'Union All'是一樣的,謝謝你的提及。 –