मेरे पास तारों के दो संग्रह हैं: CollectionA सिस्टम में संग्रहीत ऑब्जेक्ट की एक स्ट्रिंगकोलेक्शन प्रॉपर्टी है, जबकि संग्रह बी रनटाइम पर जेनरेट की गई सूची है। यदि कोई अंतर है तो संग्रह बी से मिलान करने के लिए संग्रह ए को अद्यतन करने की आवश्यकता है। तो मैंने हटाने की कोशिश की कि मुझे हटाने के लिए एक सरल LINQ विधि होने की उम्मीद है।मुझे एकत्रित संग्रह को संशोधित नहीं करते समय "संग्रह संशोधित किया गया था; गणना ऑपरेशन निष्पादित नहीं हो सकता है"?
var strDifferences = CollectionA.Where(foo => !CollectionB.Contains(foo));
foreach (var strVar in strDifferences) { CollectionA.Remove(strVar); }
लेकिन मैं strDifferences पर एक "Collection was modified; enumeration operation may not execute"
त्रुटि हो रही है ... भले ही यह संग्रह संशोधित किया जा रहा से एक अलग गणनीय है! मैंने मूल रूप से इस त्रुटि को बचने के लिए स्पष्ट रूप से तैयार किया है, क्योंकि मेरा पहला कार्यान्वयन इसे उत्पन्न करेगा (जैसा कि मैं CollectionA
पर अनुमान लगा रहा था और !CollectionB.Contains(str)
पर हटा रहा था)। क्या कोई इस बारे में कुछ अंतर्दृष्टि निकाल सकता है कि यह गणना क्यों विफल रही है?
'ToArray() 'बेहतर नहीं होगा? 'सूची' का उपयोग करने की कोई आवश्यकता नहीं है। – svick
@svick यह कुछ ऐसा है जो मैंने कुछ समय के लिए सोचा है, लेकिन यह एक प्रश्न होगा जो मैं किसी अन्य दिन पूछूंगा। बशर्ते कि यह पहले से ही नहीं पूछा गया है, बकल- –
@ ग्रेस नोट को यहां पकड़ें: http://stackoverflow.com/questions/1105990/is-it-better-to-call-tolist-or-toarray-in -linq-query – nawfal