2010-08-23 19 views
61

के रूप में मैं एकLINQ - सूची डिक्शनरी के साथ मूल्य सूची

List<MyObject> 

कि मैं डेटाबेस से पुनः प्राप्त है कन्वर्ट। हालांकि, मैं इसे समूह उद्देश्यों के लिए MyObject में एक संपत्ति द्वारा चाबी चाहता हूं। मैं निम्नलिखित है

Dictionary<long, List<MyObject>> 

:

myObjectList.ToDictionary(x => x.KeyedProperty) 

लेकिन यह रिटर्न:

Dictionary<long, MyObject> 
+0

क्या आप डब्ल्यूएचआईसी मायऑब्जेक्ट के एक प्रस्ताव के लिए कुंजीपटल की कुंजी चाहते हैं? - आपके पास उनकी पूरी सूची है .... –

उत्तर

123

ऐसा लगता है कि आप समूह के लिए चाहते LINQ के साथ सबसे अच्छा तरीका है करने के लिए अपनी सूची कास्ट करने के लिए क्या है MyObjectKeyedProperty द्वारा उदाहरण और उस समूह को में डाल दें। यदि ऐसा है तो निम्नलिखित कोशिश

List<MyObject> list = ...; 
var map = list 
    .GroupBy(x => x.KeyedProperty) 
    .ToDictionary(x => x.Key, x => x.ToList()); 
11

तुम इतनी तरह Enumerable class पर ToLookup extension method उपयोग करना चाहिए:

List<MyObject> list = ...; 

ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty); 

चाहेंगे कि आपको एक शब्दकोश में चाहते हैं, तो आप ToDictionary extension method इस्तेमाल कर सकते हैं, तो जैसे :

IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
    l => l.Key); 
संबंधित मुद्दे