2016-01-08 23 views
5

i mit Zusammenführen von zwei Liste des Objekts ein Problem habe hier sind sie:Zusammenführen von zwei Listen-Objekten

first one 
List<NSKData> NSKDataList = new List<NSKData>(); 

public class NSKData 
{ 
    public string ID { get; set; } 
    public string Issue { get; set; } 
    public string ToolTipInfoText { get; set; } 
    public NSKData() { } 
    public NSKData(string id, string issue, string tooltipinfo) 
    { 
     ID = id; 
     Issue= issue; 
     ToolTipInfoText = tooltipinfo; 
    } 
} 

second one 
List<IssuesMoreInfo> IssuesMoreInfoList = new List<IssuesMoreInfo>(); 

public class IssuesMoreInfo 
{ 
    public string ID { get; set; } 
    public string IssueMoreInfoText { get; set; } 
} 

Wenn ich alle benötigten Daten auf einmal bekommen können, ich diese Frage wird nicht fragen, aber ich Ich sammle alle Daten für die erste, und erst nachdem ich Daten für die zweite bekommen kann.

Also, was ich brauche im Ergebnis ist: , um IssueMoreInfo von zweiter, nach ID in beiden, wie für ID 10 in der ersten, erhalten wir IssueMoreInfoText Spalte in der zweiten und übergeben sie zu ersten Liste in Spalte ToolTipInfoText

Hoffnung für Ihre Hilfe, Jungs dank

+0

Wie es ist, ist es nicht klar, wie genau Ihre Ausgabe aussehen soll. Es könnte hilfreich sein, wenn Sie ein Beispiel für Ihre Eingabe angeben könnten und was das Ergebnis sein soll. – germi

+0

Ich bin von einigen Bugtracker im Internet greifen, parse es, und nach der Liste füllen mit Daten, ist es wichtig? 'foreach (var rowrow in NeededIssuesDataList) { NSKDataList.Add (neu NSKData() { ID = rowrow.ID, Ausgabe = Ausgabe ToolTipInfo = "Keine Information" }); } ' – GGodlike

+0

erhalten Sie diese Daten db? –

Antwort

4

Ich gehe davon aus Sie suchen Enumerable.Join:

var query = from data in NSKDataList 
      join info in IssuesMoreInfoList 
      on data.ID equals info.ID 
      select new NSKData(data.ID, data.Issue, info.IssueMoreInfoText); 
NSKDataList = query.ToList(); 

Eine andere Möglichkeit, die nicht alle Objekte neu erstellen muss und die Liste:

var infoIdLookup = IssuesMoreInfoList.ToLookup(i => i.ID); 
foreach(NSKData data in NSKDataList) 
{ 
    data.ToolTipInfoText = infoIdLookup[data.ID] 
     .Select(i => i.IssueMoreInfoText) 
     .FirstOrDefault(); 
} 
2

Versuchen Linq

var query = from c in NSKDataList 
      join o in IssuesMoreInfoList on c.ID equals o.ID 
      select new { c.ID, c.Issues , c.ToolTipInfoText , o.IssueMoreInfo }; 

die Abfrage enthält sowohl aus den Listen Info Registriert mit

http://www.dotnetperls.com/join

0

verwenden Linq es ist einfacher zu tun:

NSKDataList.ForEach(nskData => nskData.ToolTipInfoText = IssuesMoreInfoList.Where(imf => imf.ID == nskData.ID).SingleOrDefault().IssueMoreInfoText); 

Was sie tut, ist:

Foreach Element in NSKDataList wird es seine ToolTipInfoText ändern, in dem Sie auf die IssuesMoreInfoList gehen und filtern sie durch ID wie gewünscht und erhalten dann die eine oder Standard-zurückgegeben (falls keine ausgewählt wurde) und erhalten ihre IssueMoreInfoText .