2016-12-20 2 views
6

Izwei Listen mit diff Strukturen C# verschmelzenden

string source, string target, int count 

Beispieldaten eine Liste von Objekten mit Struktur haben:

sourcea  targeta  10 
sourcea  targetb  15 
sourcea  targetc  20 

Meine andere Liste von Objekten ist mit Struktur

string source, int addnvalueacount, int addnvaluebcount, int addnvalueccount 

Beispieldaten:

sourcea 10 25 35 

Ich möchte die zweite Liste in die erste Listenstruktur ändern und dann eine Union alle (concat) mit der ersten Liste.

So sollte zur Folge haben, wie unten sehen:

sourcea  targeta  10 
sourcea  targetb  15 
sourcea  targetc  20 
sourcea  addnlvaluea 10 
sourcea  addnlvalueb 25 
sourcea  addnlvaluec 35 

Alle Hilfe herzlich willkommen ist ..

Dank

+0

Was haben Sie versucht? Ohne eigene Ansätze wirst du hier keine Hilfe bekommen. – HimBromBeere

Antwort

8

I Concat mit SelectMany vorschlagen; Bereitstellen Sie

List<A> listA = new List<A> { 
    new A ("sorcea", "targeta" , 10), 
    new A ("sorcea", "targetb" , 15), 
    new A ("sorcea", "targetc" , 20), 
}; 

List<B> listB = new List<B> { 
    new B ("sourcea", 10, 15, 35), 
}; 

um Concat alles, was Sie tun müssen, müssen, ist SelectMany hinzuzufügen:

var result = listA 
    .Concat(listB 
    .SelectMany(item => new [] { // turn single B item into three A 
     new A(item.source, "addnvaluea", item.addnvalueacount), 
     new A(item.source, "addnvalueb", item.addnvaluebcount), 
     new A(item.source, "addnvaluec", item.addnvalueccount), 
     }));