2009-09-27 17 views
8

मेरे पास ILookup प्रकार के दो चर हैं। मैं अपने मूल्यों को गठबंधन करने के लिए संघ या कंसट का उपयोग करना चाहता था और परिणाम को उसी प्रकार के तीसरे चर के लिए असाइन करना चाहता था। संघ और कंसट दोनों IGrouping लौटते हैं। IGrouping को ILookup में कनवर्ट करने के लिए यह आसान होना चाहिए लेकिन मैं बस ऐसा नहीं कर सकता !!! :-(IGrouping केवल कुंजी को उजागर करता है इसलिए मैं लुकअप के दूसरे पैरामीटर के साथ संघर्ष कर रहा हूं .... किसी भी मदद की बहुत सराहना की जाएगी, बहुत सराहना की जाएगी।LINQ IGrouping से लुकअप में कनवर्ट करें

उत्तर

9

मुझे लगता है कि आपको उपयोग करने के लिए पहले अनुक्रमों को फ़्लैट करना होगा ToLookup:

var lookup = first.Concat(second) 
        .SelectMany(group => group, 
           (group, item) => new { Key = group.Key, 
                Item = item }) 
        .ToLookup(x => x.Key, x => x.Item); 

जो दो प्रतिनिधियों लेता SelectMany के रूप का उपयोग करता है कि: एक एक संग्रह करने के लिए मूल अनुक्रम में एक आइटम परिवर्तित करने के लिए, और एक अन्य मूल संग्रह में एक आइटम (यानी समूह) लेने के लिए और एक परिणाम आइटम पर जाने के लिए लौटे हुए संग्रह (यानी उस समूह की कुंजी से मेल खाने वाले आइटम) में आइटम। यह सबसे आसान तरीका है (मुझे लगता है!) समूह की चपेट में अपने कुंजी के साथ अनुक्रम में ।

उपर्युक्त परीक्षण नहीं किया गया है, इसलिए पूरी तरह गलत हो सकता है। यह अपेक्षाकृत अक्षम है ... यह एक शर्म की बात है कि Lookup का उदाहरण बनाने का कोई तरीका नहीं है। आप निश्चित रूप से ILookup को लागू कर सकते हैं।

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