2016-01-08 15 views
5

मैं वस्तु यहां के दो सूची को मर्ज करने में समस्या आ रही है वे हैं:मर्ज दो सूचियों वस्तुओं

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; } 
} 

मैं एक समय में सभी आवश्यक जानकारी प्राप्त कर सकते हैं, तो मैं अभ्यस्त यह सवाल पूछते हैं, लेकिन मैं मैं मुट्ठी के लिए सभी डेटा हथियार रहा हूं, और केवल बाद में मैं दूसरे के लिए डेटा प्राप्त कर सकता हूं।

तो, मैं क्या परिणाम में की जरूरत है: दूसरा एक से IssueMoreInfo प्राप्त करने के लिए, दोनों में आईडी के अनुसार, जैसे पहले एक में आईडी 10 के लिए, हम एक दूसरे में IssueMoreInfoText स्तंभ हो रही है और इसे पारित में एक सूची firt को आपकी मदद के, दोस्तों, धन्यवाद के लिए स्तंभ ToolTipInfoText

आशा

+0

जैसा कि यह है, यह स्पष्ट नहीं है कि आप वास्तव में अपने आउटपुट को कैसा दिखाना चाहते हैं। यह आपकी मदद कर सकता है अगर आप अपने इनपुट का उदाहरण प्रदान कर सकते हैं और परिणाम क्या होना चाहिए। – germi

+0

इंटरनेट में कुछ बगट्रैकर से हथियाने, इसे पार्स करने और डेटा के साथ भरने के बाद, क्या यह महत्वपूर्ण है? 'foreach (NeededIssuesDataList में वर rowrow) { NSKDataList.Add (नई NSKData() { आईडी = rowrow.ID, अंक = अंक ToolTipInfo =" कोई जानकारी " }); } ' – GGodlike

+0

क्या आपको यह डेटा डीबी मिल रहा है? –

उत्तर

4

मुझे लगता है आप 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(); 

एक और तरीका है जो सभी वस्तुओं और सूची फिर से बनाने की जरूरत नहीं है:

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

का उपयोग कर 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 }; 

क्वेरी इच्छा सूची के दोनों से जानकारी शामिल की कोशिश करो

http://www.dotnetperls.com/join

0

LINQ का उपयोग करना यह करना आसान है:

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

क्या यह करता है:

NSKDataList में

Foreach तत्व यह बदल जाएगा इसके ToolTipInfoText जहां IssuesMoreInfoList के पास जाकर के रूप में अनुरोध ID द्वारा यह फिल्टर करने और फिर एक लौट आए या डिफ़ॉल्ट (अगर कोई नहीं चुना गया था) हो जाते हैं और अपने IssueMoreInfoText मिल ।

संबंधित मुद्दे