2013-03-28 10 views
6

मेरे कोड के रूप में नीचे है, इस कोड का उपयोग एक साथ 2 सूची मर्ज करने के लिए है। और इसके मूल्य को एक से दूसरे में बदलें।LINQ का चयन एकाधिक मूल्य

(from L1 in List1 
     join L2 in List2 
     on L1.itemID equals L2.itemID 
     select L1.itemName= L2.itemName).ToArray(); 

काम उपरोक्त कोड पूरी तरह से लेकिन केवल एक ही विशेषता है जो ITEMNAME है, मैं कैसे कोड लिखना चाहिए अगर मैं 1 मूल्य से अधिक का चयन करना चाहते,

जैसे

(from L1 in List1 
    join L2 in List2 
    on L1.itemID equals L2.itemID 
    select {L1.itemName= L2.itemName , L1.ItemQuantity = L2.Quatity}).ToArray(); 
+1

शायद 'SelectMany' का उपयोग करके? – joce

+0

आप चयन के बीच "नया" गायब हैं और {, और बराबर संकेतों के बाईं ओर के नाम नए गुण हैं और एल 1 का हिस्सा नहीं हैं, इस प्रकार एल 1 द्वारा उपसर्ग नहीं किया जाना चाहिए। कुल मिलाकर, आप का चयन नए {ItemName1 = L1.itemName, ItemName2 = L2.itemName, मात्रा = L2.Quantity} की तरह कुछ चाहते – Rune

उत्तर

12

आप सीधे नीचे दिखाए गए संपत्ति के नाम का इस्तेमाल कर सकता है।

लौटने वाले सरणी में एक ही गुण itemID और itemName के साथ ऑब्जेक्ट्स होंगे।

 var outp = (from L1 in List1 
        join L2 in List2 
        on L1.itemID equals L2.itemID 
        select new { L1.itemID, L2.itemName }).ToArray(); 

नमूना आउटपुट:

enter image description here

1
के चयन के लिए
(from L1 in List1 
     join L2 in List2 
     on L1.itemID equals L2.itemID 
     select new{Prop1 = L1.SomePropery,Prop2 = L1.SomeOtherProperty).ToArray(); 

या अनाम उपयोग करना डिफ़ॉल्ट नामों

(from L1 in List1 
     join L2 in List2 
     on L1.itemID equals L2.itemID 
     select new{L1.SomePropery,L1.SomeOtherProperty).ToArray(); 
+0

इस तुम क्या मतलब है? – TGH

+0

yup, लेकिन यह त्रुटि –

+0

वापस कर देगा यह त्रुटि लौटा रहा है "त्रुटि अमान्य अनाम प्रकार सदस्य घोषणाकर्ता। अनाम प्रकार के सदस्यों को सदस्य असाइनमेंट, सरल नाम या सदस्य पहुंच के साथ घोषित किया जाना चाहिए।" –

0

आप दो वस्तुओं मर्ज करना चाहते हैं, तो आपको पहले इसी वस्तुओं से मेल खाना चाहिए शामिल हो जाना है, तो मिलान किया वस्तुओं के माध्यम से जाने के लिए और अधिक संपत्तियों की प्रतिलिपि बनाएँ। इस तरह की LINQ क्वेरी का उपयोग न करें, यह वह नहीं है जिसे इसके लिए डिज़ाइन किया गया था।

// pair off all the items in both lists 
var matches = 
    from item1 in List1 
    join item2 in List2 on item1.ItemID equals item2.ItemID 
    select new { item1, item2 }; 
foreach (var match in matches) 
{ 
    // copy the properties over for each corresponding match 
    match.item1.ItemName = match.item2.ItemName; 
    match.item1.ItemQuantity = match.item2.Quantity; 
} 
संबंधित मुद्दे