के भीतर गहरी संपत्ति को संशोधित करें और अपडेट करें को किसी ऑब्जेक्ट के एक या अधिक गुणों पर डेटा सदस्य 5 या 6 स्तर गहराई के लिए आवश्यक मान पर विचार करें।LINQ के साथ नेस्टेड foreach को बदलना;
उप-संग्रह हैं जिन्हें संपत्ति & संशोधन की आवश्यकता वाले संपत्ति को पाने के लिए पुनरावृत्त करने की आवश्यकता है।
यहां हम एक ऐसी विधि को बुला रहे हैं जो कर्मचारी के सड़क पते को साफ़ करता है। हम छोरों के भीतर डेटा बदल रहे हैं के बाद से, वर्तमान कार्यान्वयन एक for
पाश की जरूरत अपवाद को रोकने के लिए:
करने के लिए "someVariable" आवंटित नहीं कर सकता क्योंकि यह 'foreach यात्रा चर'
यहाँ है नेस्टेड foreach
और for
के साथ वर्तमान एल्गोरिदम (obfuscated)।
foreach (var emp in company.internalData.Emps)
{
foreach (var addr in emp.privateData.Addresses)
{
int numberAddresses = addr.Items.Length;
for (int i = 0; i < numberAddresses; i++)
{
//transform this street address via a static method
if (addr.Items[i].Type =="StreetAddress")
addr.Items[i].Text = CleanStreetAddressLine(addr.Items[i].Text);
}
}
}
प्रश्न: इस एल्गोरिथ्म LINQ का उपयोग कर reimplemented जा सकता है? मूल संग्रह के लिए उस स्थिर विधि कॉल द्वारा अपना डेटा बदलना आवश्यक है।
अद्यतन: मैं एक jQuery/चयनकर्ता प्रकार समाधान की दिशा में सोच/झुकाव सोच रहा था। मैंने इस सवाल को विशेष रूप से इस तरह से नहीं लिखा था। मुझे एहसास हुआ कि मैं उस विचार पर अधिक पहुंच रहा था (कोई दुष्प्रभाव नहीं)। सभी को धन्यवाद! यदि jQuery- जैसे चयनकर्ता को ऐसा करने का कोई तरीका है, तो कृपया इसे देखें!
धन्यवाद। तुम्हारा और मरदाद के जवाब कार्यात्मक रूप से समान थे, लेकिन मैंने तुम्हारा पहला देखा :) मुझे लगा कि यह कोड को फिर से टाइप करने के लिए व्यर्थ होगा, लेकिन मुझे लगा कि दुष्प्रभावों के बारे में बिंदु बनाना महत्वपूर्ण था –
LINQ कार्यान्वयन के बावजूद SQL सर्वर नहीं है एसक्यूएल के लिए उस से अलग है .NET एक - आप अभी भी दोनों सेट (LINQ से SQL) और केवल C# LINQ के साथ गुणों को बदल सकते हैं। – ppumkin