2013-04-15 12 views
11

Mam dwie proste tablicę i chciałbym połączyć za pomocą przyłączyć LINQ:Scalanie 2 tablice z wykorzystaniem 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

Czy trzeba je scalić i iteracyjne nad rezultacie, lub powinny one być połączone w innej tablicy? –

+0

Rzekomy duplikat zadaje inne pytanie: mówi o scaleniu tablicy tablic w jedną listę (np. 'SelectMany'), podczas gdy to pytanie wymaga scalenia dwóch tablic (np.' Concat'). Nominowanie pytania o ponowne otwarcie. – dasblinkenlight

Odpowiedz

27

Można to zrobić za pomocą Concat i ToArray, tak:

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

ten wstawi wszystkie elementy num2 po elementach num1, tworząc res, który wygląda jak

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

EDIT: (w odpowiedzi na komentarz: „Jak mogę również porządek albo allNumbers i res?”)

Gdy twoje dwie tablice są połączone, można użyć OrderBy aby posortować wyniki, jak poniżej:

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

nie ma funkcji, ponieważ Konatenate – Satpal

+2

usunięte downvote – Satpal

+0

Dziękuję za odpowiedzi, ale w jaki sposób mogę również sortować wszystkie numery i res? –

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

Nie przydziela pamięci. Czy to wystarczy dla twoich potrzeb?

0

spróbować jak poniżej ... to będzie ci pomóc ..

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

Jaka jest różnica między concat i Union? Czy jeden jest wyraźny, a drugi nie? – Tobias

+1

@Tobias: Tak, Unia jest inna. Biorąc pod uwagę dwie sekwencje {1, 2, 3} i {2, 3, 4} Union daje {1, 2, 3, 4}, concat daje {1, 2, 3, 2, 3, 4} –

Powiązane problemy