2011-12-13 14 views
5

से मूल्य प्राप्त करें मुझे सी # लुकअप संरचना से मूल्य प्राप्त करने में रुचि है।सी # लुकअप

उदाहरण:

var myLookup = (Lookup<string, int>)data.Rows.Cast<DataRow>().ToLookup(row => row["Name"], row => row["Id"]); 

foreach (var myLookupItem in myLookup) 
        { 
         Debug.WriteLine("Name: " + myLookupItem.Key); 
         Debug.WriteLine("Id: " + myLookupItem.ToString()); 
        } 

समस्या है कि

myLookupItem.ToString() 

वास्तविक मूल्य, बजाय केवल System.Linq.Lookup2[System.String,System.Int32] प्रदर्शित किया जाता है प्रदर्शित नहीं करता है।

बाद में

, मैं लैम्ब्डा का उपयोग कर देखने मूल्य मिलना चाहिए:

int lookupValue = myLookup.Where(x => x.Key == "Test").Select(x => x).FirstOrDefault()); 

लेकिन यह भी ऊपर के रूप में ही देता है।

कृपया सलाह दें कि इसे कैसे प्राप्त किया जाए।

अग्रिम धन्यवाद।

उत्तर

10

ऐसा इसलिए है क्योंकि लुकअप आइटम एक संग्रह है। आप इस तरह देखने के हर मूल्य देख सकते हैं:

foreach (var myLookupItem in myLookup) 
{ 
    Debug.WriteLine("Key: " + myLookupItem.Key); 
    foreach (var myLookupValue in myLookupItem) 
    { 
     Debug.WriteLine("Value: " + myLookupValue); 
    } 
} 
4

"मुझे नहीं लगता तो इसका मतलब है कि आप क्या सोचते तो इसका मतलब है।"

एक लुक (from MSDN):

कुंजी प्रत्येक एक या अधिक मान को मैप किया का एक संग्रह का प्रतिनिधित्व करता है।

अर्थात यह उनके समूहों (भले ही इन समूहों विलक्षण हैं)।

ऐसा लगता है कि आप लुकअप के बजाय शब्दकोश की तरह कुछ उपयोग करना चाहते हैं। एक शब्दकोश के मामले में। आप ToLookup() एक्सटेंशन विधि के बजाय ToDictionary() एक्सटेंशन विधि का उपयोग कर सकते हैं। फिर आप शब्दकोश पर कुंजी और मूल्य का उपयोग करेंगे।

+1

अकल्पनीय ...! –

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