2010-07-28 63 views
2

我剛剛開始學習LINQ, 我想知道是否可以使用LINQ在3個不同的堆棧中分組元素。 這是我有,可以在from子句中添加多個數組,以及如何?是否有可能與LINQ合併堆棧

 var uniqueValues = 
      from n in valuesStack.ToArray() 
      group n by n into nGroup 
      select nGroup.Key; 
+0

你描述SQL UNION查詢的相同呢? – 2010-07-28 14:13:30

+0

想起來了,是的! – david 2010-07-28 14:15:26

回答

3

可以Union堆在一起。

var s1 = new Stack<int>(); 
var s2 = new Stack<int>(); 
var s3 = new Stack<int>(); 
var r = s1.Union(s2.Union(s3)).ToArray(); 
+0

謝謝,這對我所需要的完美!我會繼續嘗試LINQ選項只是爲了知道它:) – david 2010-07-28 14:19:04

0

這是未經測試:

var uniqueValues = 
    from stack in stacks 
    from n in stack 
    group n by n into nGroup 
    select nGroup.Key; 
3
var uniqueValues = stack1 
    .Concat(stack2) 
    .Concat(stack3) 
    .Distinct(); 

或者你可以使用聯盟:

var uniqueValues = stack1 
    .Union(stack2) 
    .Union(stack3); 
+0

完美:)所以我得到的是,使用LINQ不是必要的,但可以做到這一點? – david 2010-07-28 14:20:43

+0

@david:'Union'被認爲是一個LINQ操作符。它是'System.Linq'命名空間中'Enumerable'類的一部分。 – 2010-07-28 14:31:57

+0

@Robery:種類繁多的灰色地帶。 「LINQ」是「語言集成查詢」,但這不是使用任何語言查詢功能,只是庫。 – 2010-07-28 15:15:56