Tuesday, 15 January 2013

c# - How to add 2 value of dictionary inside a list of an object -


मेरे पास एक ऐसा वर्ग है:

  वर्ग आइटम {सार्वजनिक इन्ट आईडी}; सेट; } सार्वजनिक शब्दकोश & lt; स्ट्रिंग, इंट & gt; डेटा {प्राप्त; सेट; }}  

और मेरे पास 2 लिस्ट में उस श्रेणी के ऑब्जेक्ट शामिल हैं:

  आइटम obj1 = new item (); Obj1.Id = 1; Obj1.Data = नया शब्दकोश & lt; स्ट्रिंग, int & gt; (); Obj1.Data.Add ("1", 11); Obj1.Data.Add ("2", 12); Obj1.Data.Add ("3", 13); आइटम obj2 = नया आइटम (); Obj2.Id = 2; Obj2.Data = नया शब्दकोश & lt; स्ट्रिंग, int & gt; (); Obj2.Data.Add ("1", 21); Obj2.Data.Add ("2", 22); Obj2.Data.Add ("3", 23); आइटम obj3 = नया आइटम (); Obj3.Id = 3; Obj3.Data = नया शब्दकोश & lt; स्ट्रिंग, int & gt; (); Obj3.डेटा। जोड़ें ("1", 31); Obj3.Data.Add ("2", 32); Obj3.डेटा। जोड़ें ("3", 33); आइटम obj4 = नया आइटम (); Obj4.Id = 1; Obj4.Data = नया शब्दकोश & lt; स्ट्रिंग, int & gt; (); Obj4.Data.Add ("1", 41); Obj4.Data.Add ("2", 42); Obj4.Data.Add ("3", 43); आइटम obj5 = नया आइटम (); Obj5.Id = 2; Obj5.Data = नया शब्दकोश & lt; स्ट्रिंग, int & gt; (); Obj5.Data.Add ("1", 51); Obj5.डेटा। जोड़ें ("2", 52); Obj5.Data.Add ("3", 53); आइटम obj6 = नया आइटम (); Obj6.Id = 3; Obj6.Data = नया शब्दकोश & lt; स्ट्रिंग, int & gt; (); Obj6.Data.Add ("1", 61); Obj6.Data.Add ("2", 62); Obj6.Data.Add ("3", 63); सूची के & lt; आइटम & gt; Lst1 = नई सूची & lt; आइटम & gt; (); lst1.Add (obj1); lst1.Add (obj2); lst1.Add (obj3); सूची के & lt; आइटम & gt; Lst2 = नई सूची & lt; item & gt; (); lst2.Add (obj4); lst2.Add (obj5); lst2.Add (obj6);  

अब मैं वस्तु के आईडी और शब्दकोश कुंजी के आधार पर शब्दकोश के मूल्य को जोड़ना चाहता हूँ। परिणाम इस तरह होगा:

  सूची & lt; आइटम & gt; परिणाम = नई सूची & lt; आइटम & gt; (); परिणाम [0] .आईडी = 1 का परिणाम [0] .डेटा ["1"] = 52 // obj1.डेटा [1] + obj4.Data [1] परिणाम [0] .डेटा ["2"] = 54 / / Obj1.Data [2] + obj4.Data [2] परिणाम [0] .डेटा ["3"] = 56 / obj1.डेटा [3] + obj4.Data [3] परिणाम [1] .Id = 2 परिणाम [1] .डेटा ["1"] = 72 / obj2.डेटा [1] + obj5.डेटा [1] परिणाम [1] .डेटा ["2"] = 74 / obj2.डेटा [2] + Obj5.Data [2] परिणाम [1] .डेटा ["3"] = 76 / obj2। डेटा [3] + obj5.डेटा [3] परिणाम [2] .आईडी = 3 परिणाम [2] .डेटा [" 1 "] = 92 / obj3.Data [1] + obj6.Data [1] परिणाम [2] .डेटा [" 2 "] = 94 / obj3.डेटा [2] + obj6.डेटा [2] परिणाम [ 2] .डेटा ["3"] = 96 / obj3.डेटा [3] + obj6.Data [3]  

यह परिणाम प्राप्त करने का सबसे अच्छा तरीका क्या है?

धन्यवाद

सबसे पहले, आप एक उदाहरण के रूप में दिखाया गया आउटपुट गलत है। उदाहरण के लिए, obj3.Data [1] + obj6.Data [1] बराबर 92 , 56 नहीं।

तो, यह यहां के साथ है LINQ के सभी सौंदर्य:

  var परिणाम = lst1.जोइंड (lst2, x = & gt; x.Id, y = & gt; y.Id, (x) , Y) = & gt; नया आइटम {आईडी = x.Id, डेटा = x.डेटा .जोइंड (y.Data, a = & gt; a.Key, b = & gt; बी.केए, (ए, बी) = & gt ; New {a.key, value = a.value + b.value})। ToDictionary (r = & gt; r.key, t = & gt; t.value}})। ToList ();  

आप चाहते हैं, परिणाम यह है:

  परिणाम [0] .आईडी = 1 परिणाम [0] .डेटा ["1"] = 52 // obj1.Data [1] + obj4.Data [1] परिणाम [0] .डेटा ["2"] = 54 / obj1.डेटा [2] + obj4.Data [2] परिणाम [0] .डेटा [ "3"] = 56 / obj1.Data [3] + obj4.Data [3] परिणाम [1] .आईडी = 2 परिणाम [1] .डेटा ["1"] = 72 / obj2.डेटा [1] + Obj5.Data [1] परिणाम [1] .डेटा ["2"] = 74 / obj2.डेटा [2] + obj5.डेटा [2] परिणाम [1] .डेटा ["3"] = 76 // Obj2.Data [3] + obj5.Data [3] परिणाम [2] .Id = 3 परिणाम [2] .डेटा ["1"] = 92 / obj3.डेटा [1] + obj6.डेटा [1] परिणाम [2] .डेटा ["2"] = 94 / obj3.डेटा [2] + obj6.डेटा [2] परिणाम [2] .डेटा ["3"] = 96 / obj3.डेटा [3] + obj6 .डेटा [3]  

No comments:

Post a Comment