2016-11-15 2 views
-1

Ich habe zwei Arrays:wie Werte von doppeltem Elemente in Array zusammenzufassen

string[] fruit = { "apple", "banana", "lemon", "apple", "lemon" }; 
int[] quantity = { 2,   4,  1,  2,  2 }; 

Die zweiten dieselbe Länge des ersten hat, und die ganzen Zahlen sind, die Menge jeder Frucht.

Ich möchte diese beiden Arrays erstellen:

totalefruit = { "apple", "banana", "lemon" }; 
totalquantity = {4,   4,  3} 
+2

Was ist die spezifische Frage? –

+1

Haben Sie etwas versucht? Interessiert zu zeigen? – rbm

+2

Warum würden Sie 2 Arrays haben, um diese Werte zu speichern? Sie sollten einen Blick auf 'Wörterbuch ' – RandomStranger

Antwort

2

Versuchen Sie folgendes:

string[] fruit = { "apple", "banana", "lemon", "apple", "lemon" }; 
int[] quantity = { 2, 4, 1, 2, 2 }; 

var result = 
    fruit 
     .Zip(quantity, (f, q) => new { f, q }) 
     .GroupBy(x => x.f, x => x.q) 
     .Select(x => new { Fruit = x.Key, Quantity = x.Sum() }) 
     .ToArray(); 

var totalefruit = result.Select(x => x.Fruit).ToArray(); 
var totalquantity = result.Select(x => x.Quantity).ToArray(); 

result sieht wie folgt aus:

result

+0

Ja! Das ist was ich brauche. Danke –

2

Sie Zip und eine Lookup verwenden könnte :

var fruitQuantityLookup = fruit 
    .Zip(quantity, (f, q) => new { Fruit = f, Quantity = q }) 
    .ToLookup(x => x.Fruit, x => x.Quantity); 
string[] totalefruit = fruitQuantityLookup.Select(fq => fq.Key).ToArray(); 
int[] totalquantity = fruitQuantityLookup.Select(fq => fq.Sum()).ToArray(); 
+0

Es funktioniert! Vielen Dank –

Verwandte Themen