मुझे 3 टेबल पर यूनियन करने के लिए linq का उपयोग करना पसंद है। निश्चित नहीं है कि निम्न जैसा कुछ क्यों काम नहीं करेगा:

var repdata = (from p in db.Table1
               select p)
                       .Union(from p in Table2
                        select p);
3
Nate Pet 21 अक्टूबर 2011, 23:29

1 उत्तर

सबसे बढ़िया उत्तर

Union केवल उसी तत्व प्रकार के साथ काम करता है। आप उपयोग कर सकते हैं:

var data = db.Table1.Select(p => new { p.Value1, p.Value2 })
     .Union(db.Table2.Select(q => new { q.Value1, q.Value2 })
     .Union(db.Table3.Select(r => new { Value1 = r.Alias1, Value2 = r.Other }); 

यहां अनाम प्रकार सभी तीन तालिकाओं को प्रोजेक्ट करने के लिए एक सामान्य प्रकार के रूप में कार्य करता है, ताकि Union काम कर सके।

11
Jon Skeet 21 अक्टूबर 2011, 23:30
जॉन, मुझे इस तरह से एक त्रुटि मिल रही है। मतलब प्रोग्राम भी नहीं चलेगा. Value1, Value2, आदि क्या दर्शाते हैं?
 – 
Nate Pet
21 अक्टूबर 2011, 23:39
@NatePet: जो भी गुण आप टेबल से एक्सेस करने का प्रयास कर रहे हैं। आपने हमें तालिकाओं के बारे में कुछ नहीं बताया, इसलिए मैंने कुछ नाम बनाए, और दिखाया कि अगर तीनों तालिकाओं में नाम समान नहीं हैं तो अनुमानों का उपयोग कैसे करें।
 – 
Jon Skeet
21 अक्टूबर 2011, 23:41
मैंने अपनी तालिका में तालिकाओं का मिलान करने की कोशिश की लेकिन उम्मीद के मुताबिक काम नहीं किया: var data = db.TerritoryReps.Select(p => new { p.Rpfn, p.Rpln }) .Union(db.RegionalManagers.Select(q => new { q.Rfn, q.Rln }) .Union(db.DistrictManagers.Select(r => new { r.Dfn, r.Dln });
 – 
Nate Pet
21 अक्टूबर 2011, 23:58
पेट: जॉन आपको पहले ही दिखा चुका है कि इस समस्या को कैसे हल किया जाए। कृपया उसका उत्तर और उसकी टिप्पणी दोबारा पढ़ें!
 – 
Mark Byers
22 अक्टूबर 2011, 00:01
@NatePet: उन अज्ञात प्रकारों में समान संपत्ति के नाम नहीं हैं, है ना? आपको तीनों तालिकाओं के लिए एक ही अनाम प्रकार का उपयोग करने की आवश्यकता है, जिसका अर्थ है एक ही क्रम में समान गुण नामों और प्रकारों का उपयोग करना।
 – 
Jon Skeet
22 अक्टूबर 2011, 00:14