2017-04-30 3 views

Antwort

0

Auch wenn dies ist ein sehr spezifisches Problem, hier ist eine Lösung:

var array1 = new[] { 2, 5, 7, 8, 9, 4 }; 
var array2 = new [] { 4, 8, 2, 1, 5, 8 }; 

array1 = array1.Select((i, index) => i % 2 == 1 ? array2[index] : i).ToArray(); 
//result: int[6] { 2, 8, 2, 8, 5, 4 } 

Es nimmt die Elemente aus der ersten Reihe, überprüft, ob es selbst und ersetzt sie, wenn sie von dem Punkt an dieser Position ungerade sind das andere Array.

Ich bin mir nicht ganz sicher, ob dies das ist, was Sie suchen, andernfalls erklären Sie bitte Ihr Problem.

Zum Beispiel könnten Sie Elemente mit ungerader Index bedeuten:

var array1 = new[] { 2, 5, 7, 8, 9, 4 }; 
var array2 = new[] { 4, 8, 2, 1, 5, 8 }; 

array1 = array1.Select((i, index) => index % 2 == 1 ? array2[index-1] : i).ToArray(); 
//result: int[6] { 2, 4, 7, 2, 9, 5 } 
+0

Die erste ist was ich will. Danke vielmals. –

+0

@EmrahIsmayilzade Wenn dies Ihr Problem gelöst hat, vergessen Sie nicht, die Antwort als eine Antwort zu markieren (kreuzen Sie das Häkchen an), da dies Ihnen und der weiteren Gemeinschaft hilft, gelöste Probleme zu identifizieren. – MetaColon

1

Langversion und andere Herangehensweise an das Problem. (Ohne Linq)

int[] array1 = new int[6] { 2, 5, 7, 8, 9, 4 }; 
int[] array2 = new int[6] { 4, 8, 2, 1, 5, 8 }; 

for (int i = 0; i < array1.Length; i++) 
{ 
if ((array1[i] % 2 == 0)) 
{ 
    array1[i] = array1[i]; 
} 
else 
{ 
    array1[i] = array2[i]; 
} 
} 

foreach(int t in array1) 
Console.Write(t + ", "); 

//result: 2, 8, 2, 8, 5, 4 
+0

In diesem Anti-Linq-Beispiel sehe ich noch einmal die Schönheit in Linq :) – MetaColon

+0

Anti-Linq ... Wie in alten Zeiten :) –

Verwandte Themen