मैं LINQ क्वेरी के SELECT खंड में एक?: ऑपरेटर का उपयोग कैसे करूं? यदि यह नहीं किया जा सकता है, तो मैं एक का अनुकरण कैसे कर सकता हूं? लक्ष्य मेरे चयन खंड में एक CASE ब्लॉक प्राप्त करना है। जैसा कि आपको संदेह हो सकता है, मुझे एक त्रुटि मिल रही है: अमान्य अनाम प्रकार सदस्य घोषणाकर्ता। बेनामी प्रकार के सदस्यों को सदस्य असाइनमेंट, सरल नाम या सदस्य पहुंच के साथ घोषित किया जाना चाहिए।?: LINQ क्वेरी में ऑपरेटर
इस "एक आंतरिक से मैं में शामिल होने a.ipid = i.id भीतरी पर यू i.uid = u.id पर शामिल होने के" उचित तरीके से, या एक पर्याप्त तरह से, कहने के लिए है? यदि नहीं, तो कृपया एक प्रदान करें। धन्यवाद।
var query = from a in db.tblActivities from i in db.tblIPs from u in db.tblUsers select new { u.UserName == null ? i.Address : u.UserName, a.Request, a.DateTime };
उत्तर
एक अनाम प्रकार बनाते समय (आप एक प्रकार निर्दिष्ट किए बिना "नया" के साथ क्या कर रहे हैं) आपको प्रत्येक संपत्ति के लिए सदस्य का नाम निर्दिष्ट करना होगा। अपने उदाहरण से, यह कुछ इस तरह दिखेगा: (यह भी तय आपके मिलती है)
var query = from a in db.tblActivities
join i in db.tblIPs on a.ipid equals i.id
join u in db.tblUsers on i.uid equals u.id
select new {
UserName = (u.UserName ?? i.Address),
Request = a.Request,
Date = a.DateTime
};
आप शायद उपयोगकर्ता नाम अपना रास्ता कर सकता है, भी:
UserName = (u.UserName == null) ? i.Address : u.UserName,
लेकिन ?? ऑपरेटर अधिक संक्षिप्त है। यह एसक्यूएल में "isnull" के समान है।
मैं एसक्यूएल को Linq करने के लिए काफी नई कर रहा हूँ, लेकिन मैं बहुत यकीन है कि यह इस तरह जाना होगा हूँ:
var query =
from a in db.tblActivities
from i in a.tblIPs
from u in i.tblUsers
select new
{
userName = (u.UserName == null)
? i.Address
: u.UserName,
a.Request,
a.DateTime
};
अगर बयान कोष्ठक में हो सकता है और बाहर परिणामों की जरूरत है उनमें से। जुड़ने के लिए, आप चेन का पालन करें-> कई से।
आपको शामिल कीवर्ड का उपयोग करना होगा, और उचित आंतरिक जुड़ने के लिए संस्थाओं के बीच संबंधों को परिभाषित करना होगा।
Here आप इसके बारे में कुछ उदाहरण पा सकते हैं, मैं आपको LinqPad प्राप्त करने की अत्यधिक अनुशंसा करता हूं, यह आपके प्रश्नों का परीक्षण करने के लिए एक बहुत ही मूल्यवान टूल है, यह सीखने के लिए भी बहुत अच्छा है, इसमें 200+ उदाहरण हैं।
धन्यवाद ... +1, लिंककैड के बारे में कभी नहीं सुना, बहुत आसान; धन्यवाद! – tsilb
यदि आप केवल शून्य के लिए जांच रहे हैं, तो आप भी इसका उपयोग कर सकते हैं ??
string something = null;
string somethingElse = something ?? "default value";
उपरोक्त उदाहरण के लिए, यह जो कि जाना करने के लिए सही है ...
string something = (somethingElse == null ? "If it is true" : "if it is false");
कोष्ठक की आवश्यकता नहीं है, लेकिन वे पढ़ने में सहायता करते हैं।
वास्तव में। यह प्रश्न IQueryable के विशेष कार्यान्वयन पर निर्भर करता है कि आपकी linq अभिव्यक्ति वापस आ जाएगी। मैं देखता हूं कि आपके पास db.XXX है, तो क्या आप linq का उपयोग एसक्यूएल या कुछ लिनक डेटा स्टोर में कर रहे हैं? यदि ऐसा है, तो IQueryable के विशिष्ट कार्यान्वयन को आपकी अभिव्यक्ति को स्टोर अभिव्यक्ति में अनुवाद करने का एक तरीका होना चाहिए। उपरोक्त टिप्पणियों के अलावा, कुछ अन्य टिप्पणियां सही हैं कि अज्ञात प्रकार में आपको प्रत्येक सदस्य के लिए एक नाम निर्दिष्ट करना होगा। यह वास्तव में आपकी त्रुटि है।
- 1. LINQ क्वेरी
- 2. LINQ क्वेरी
- 3. LINQ क्वेरी
- 4. LINQ क्वेरी
- 5. LINQ: क्वेरी
- 6. LINQ क्वेरी
- 7. linq क्वेरी
- 8. LINQ क्वेरी
- 9. LINQ क्वेरी
- 10. LINQ क्वेरी
- 11. LINQ क्वेरी
- 12. लिंक क्वेरी 'और' 'या' ऑपरेटर
- 13. LINQ ElementAtOrDefault ऑपरेटर
- 14. LINQ - जहां क्वेरी में खंड
- 15. प्रोलॉग "या" ऑपरेटर, क्वेरी
- 16. जेनेरिक LINQ क्वेरी predicate?
- 17. एक LINQ क्वेरी
- 18. ASP.NET MVC LINQ क्वेरी
- 19. क्वेरी एक्सटेंशन LINQ
- 20. डायनामिक LINQ क्वेरी
- 21. एक LINQ क्वेरी
- 22. इंटरसेक्ट LINQ क्वेरी
- 23. एक linq क्वेरी
- 24. लेखन क्वेरी LINQ
- 25. वापसी LINQ क्वेरी
- 26. एक LINQ क्वेरी
- 27. LINQ क्वेरी सिंटेक्स लैम्ब्डा
- 28. पास LINQ क्वेरी
- 29. सपाट Linq समूह क्वेरी
- 30. NHibernate Linq क्वेरी HQL
बहुत बढ़िया।यही कारण है कि बहुत करीब था, और जवाब देने के लिए मुझे मिल गया: TblActivities में एक से TblUsers में यू में शामिल होने a.IPID i.ID के बराबर होती है पर TblIPs में मैं शामिल होने के a.UID के बराबर होती है पर u.ID नए {उपयोगकर्ता नाम = का चयन करें (u.UserName ?? i.Address), Request = a.Request, date = a.DateTime} – tsilb
यदि आप मेरा उदाहरण देखते हैं तो आप तालिका उपनामों का उपयोग करके शामिल कथन को छोड़ सकते हैं। – LeppyR64
जुड़ने के बिना, आपने अभी कार्टेशियन जॉइन (क्रॉस उत्पाद) लागू किया है। यदि प्रत्येक तालिका में 10 पंक्तियां थीं, तो आपको 1000 परिणाम वापस मिलेंगे। मेरा विश्वास करो, आप वास्तव में चाहते हैं कि वे वहां हों। – GalacticCowboy