2013-04-15 25 views
11

ho due semplici array e vorrei unire utilizzando unirsi LINQ:Unisci 2 array utilizzando LINQ

int[] num1 = new int[] { 1, 55, 89, 43, 67, -3 }; 
int[] num2 = new int[] { 11, 35, 79, 23, 7, -10 }; 

var result = from n1 in num1 
      from n2 in num2 
      select result; 
+0

Avete bisogno di unirle e iterare il risultato, o dovrebbero essere fuse in un altro array? –

+0

Il presunto duplicato pone una domanda diversa: si tratta di unire una matrice di array in una singola lista (ad esempio 'SelectMany'), mentre questa domanda richiede di unire due array (ad esempio' Concat'). Nomina la domanda per la riapertura. – dasblinkenlight

risposta

27

è possibile farlo utilizzando Concat e ToArray, in questo modo:

var res = num1.Concat(num2).ToArray(); 

Questo metterà tutti gli elementi di num2 dopo gli elementi di num1, producendo res che assomiglia a

int[] { 1, 55, 89, 43, 67, -3, 11, 35, 79, 23, 7, -10 }; 

EDIT: (in risposta a un commento: "Come posso anche ordinare sia allNumbers e res?")

Una volta che i due array vengono unite, è possibile utilizzare OrderBy per ordinare il risultato, in questo modo:

var res = num1.Concat(num2).OrderBy(v=>v).ToArray(); 
+0

non vi è alcuna funzione come Concatenate – Satpal

+2

rimosso downvote – Satpal

+0

Grazie per le risposte, ma come posso anche ordinare o allNumeri e res? –

3
var allNumbers = num1.Concat(num2); 
3
var result = num1.Concat(num2); 

Non alloca memoria. È sufficiente per le tue esigenze?

0

provare come qui di seguito ... vi aiuterà a ..

int[] num1 = new int[] { 1, 55, 89, 43, 67, -3 }; 
int[] num2 = new int[] { 11, 35, 79, 23, 7, -10 }; 
var result = num1.Union(num2).ToArray(); 
+0

Qual è la differenza tra concat e Union? Uno è distinto e l'altro no? – Tobias

+1

@Tobias: Sì, l'Unione è distinta. Dati due sequenze {1, 2, 3} e {2, 3, 4} Unione dà {1, 2, 3, 4}, concat dà {1, 2, 3, 2, 3, 4} –