मैं इसे कमांड / क्वेरी पृथक्करण का उपयोग करने के लिए एक उपयुक्त स्थान के रूप में मानूंगा । उदाहरण के लिए:
// query
var validItems = items.Where(i => i.Field != null && i.State != ItemStates.Deleted);
// command
foreach (var item in validItems) {
// do stuff
}
यह आपको क्वेरी परिणाम के लिए एक अच्छा स्व-दस्तावेजीकरण नाम देने की अनुमति देता है। यह आपको रीफ़ैक्टरिंग के अवसरों को देखने में भी मदद करता है, क्योंकि यह रीफ़ैक्टर कोड के लिए बहुत आसान है, जो केवल डेटा या केवल मिश्रित कोड की तुलना में डेटा को म्यूट करता है जो दोनों को करने की कोशिश करता है।
डिबगिंग करते समय, आप foreach
जल्दी से जांच कर सकते हैं कि validItems
क्या आप उम्मीद करते हैं कि समाधान की सामग्री । जब तक आपको जरूरत न हो, आपको लैम्ब्डा में कदम रखने की जरूरत नहीं है। यदि आपको लैम्ब्डा में कदम रखने की आवश्यकता है, तो मैं इसे एक अलग फ़ंक्शन में फैक्टरिंग करने का सुझाव देता हूं, फिर इसके बजाय इसके माध्यम से कदम बढ़ाएं।
क्या प्रदर्शन में अंतर है? यदि क्वेरी डेटाबेस द्वारा समर्थित है, तो LINQ संस्करण में तेज़ी से चलने की क्षमता है, क्योंकि SQL क्वेरी अधिक कुशल हो सकती है। यदि यह LINQ ऑब्जेक्ट्स के लिए है, तो आपको कोई वास्तविक प्रदर्शन अंतर दिखाई नहीं देगा। हमेशा की तरह, अपने कोड को प्रोफाइल करें और उन अड़चनों को ठीक करें जो वास्तव में रिपोर्ट की गई हैं, बजाय अग्रिम में अनुकूलन के पूर्वानुमान की कोशिश करने के।