मैं कहाँ का उपयोग कर कोड की एक पंक्ति है में एक से अधिक शर्त का उपयोग? तो मैं x => predicate && y => predicate
कह सकता हूँ?LINQ का जहां विधि
धन्यवाद
मैं कहाँ का उपयोग कर कोड की एक पंक्ति है में एक से अधिक शर्त का उपयोग? तो मैं x => predicate && y => predicate
कह सकता हूँ?LINQ का जहां विधि
धन्यवाद
यदि आप चाहें तो एक भी विधेय में अपने अलग स्थितियों रोल कर सकते हैं:
codebase.Methods.Where(x => (x.Body.Scopes.Count > 5) && (x.Foo == "test"));
या आप एक अलग उपयोग कर सकते हैं Where
प्रत्येक शर्त के लिए कॉल करें:
codebase.Methods.Where(x => x.Body.Scopes.Count > 5)
.Where(x => x.Foo == "test");
अधिक जानकारी के साथ बड़े खंडों को ध्यान में रखते हुए, क्या दोनों मामलों में समान जटिलता है या क्या पहला धीमा है? – dwbrito
@alaxid: मैं उम्मीद करता हूं कि दूसरा दूसरा * थोड़ा * धीमा हो, क्योंकि प्रत्येक 'कहां' कॉल एक छोटे से अतिरिक्त ओवरहेड (विधि कॉल, प्रतिनिधि आमंत्रण इत्यादि) में शामिल होता है। मैं इसके बारे में किसी भी सामान्य दिन-प्रति-दिन परिदृश्य में चिंतित नहीं होगा। – LukeH
मैं खोज रहा था। कोई(), जाहिर है यह काम किया। धन्यवाद ! –
इस तरह ..
codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.Scopes.Count < 10);
"y" क्या दर्शाता है?
आप केवल मानक & & स्थिति का उपयोग कर सकते हैं। एक "Y" के लिए कोई ज़रूरत नहीं:
codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.SomethingElse < 14);
अपने उदाहरण में, जहां y
से आता है? Where
विधि एक इनपुट पैरामीटर के साथ एक लैम्ब्डा लेता है, जो आपके द्वारा संचालित अनुक्रम के एक उदाहरण का प्रतिनिधित्व करता है।
आप कर सकते हैं, ज़ाहिर है, ऐसी अनेक शर्तों x
के खिलाफ है:
Where(x => x.Foo > 5 && x.Bar < 3)
मुझे यह नहीं मिला। आप क्या नहीं कर सकते
codebase.Methods.Where(x => x.Head.IsHairy && x.Body != null && x.Body.Scopes.Count > 5);
के रूप में कार्य करेगा y जो आपको रहस्यमय कर रहा है वह फ़िल्टर में प्रतिद्वंद्वी होने के लिए
कोई आप एक ही जहां में 2 प्रतिनिधियों को परिभाषित नहीं कर सकते हैं, लेकिन आप एक दूसरे के बाद का निर्माण या एक ही शर्त पर इस
var result = codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.Scopes.name == "");
or
var result = codebase.Methods.Where(x => x.Body.Scopes.Count > 5)
.where(y=> y.Body.Scopes.name == '');
or
var result = codebase.Methods.Where(x => x.Body.Scopes.Count > 5 )
.Union(codebase.Methods.Where(y => y.Body.Scopes.name == '' ));
codebase.Methods.Where(x => x.Body.Scopes.Count > 5).Where(x => x.Body.Scopes.TypeName == "Scopes").Where(x => x.Body.Scopes.Level == LEVEL_HIGH);
की तरह दोनों डाल सकता है x और y विभिन्न प्रकार है? –