উপাদান নির্বাচন না বরং উপাদান আপনি সরানোর চেষ্টা তুলনায় না চান। এটি উপাদানগুলি অপসারণের চেয়ে অনেক বেশি সহজ (এবং সাধারণত আরও কার্যকর)।
var newSequence = (from el in list
where el.Something || el.AnotherThing < 0
select el);
নীচে মাইকেল ডিলনের দেওয়া মন্তব্যের প্রতিক্রিয়া হিসাবে আমি একটি মন্তব্য হিসাবে এটি পোস্ট করতে চেয়েছিলাম, তবে এটি আমার দীর্ঘসূত্রীর চেয়ে অনেক দীর্ঘ এবং সম্ভবত কার্যকর হতে পারে:
ব্যক্তিগতভাবে, আমি কখনই আইটেমগুলিকে এক-এক করে সরিয়ে ফেলতাম না, যদি আপনার অপসারণের প্রয়োজন হয়, তবে কলটি RemoveAll
একটি প্রাকটিক লাগে এবং কেবল একবার অভ্যন্তরীণ অ্যারেটিকে পুনরায় সাজিয়ে তোলে, যেখানে আপনি মুছে ফেলা প্রতিটি উপাদানগুলির জন্য Remove
একটি Array.Copy
অপারেশন করে। RemoveAll
অনেক বেশি দক্ষ।
এবং যখন আপনি কোনও তালিকার পিছনে পিছনে ঘুরছেন, আপনি ইতিমধ্যে যে উপাদানটি সরাতে চান তার সূচি রয়েছে, তাই এটি কল করা আরও কার্যকর হবে RemoveAt
, কারণRemove
প্রথমে তালিকার একটি ট্র্যাভারসাল করে আপনাকে সেই উপাদানটির সূচি খুঁজে বের করতে হবে you অপসারণের চেষ্টা করছেন তবে আপনি ইতিমধ্যে সেই সূচকটি জানেন।
সব মিলিয়ে, কখনও Remove
লুপ-ইন করতে কল করার কোনও কারণ আমি দেখতে পাচ্ছি না । এবং আদর্শভাবে, যদি এটি সম্ভব হয় তবে তালিকা থেকে উপাদানগুলি প্রয়োজনীয় স্ট্রিম করার জন্য উপরের কোডটি ব্যবহার করুন যাতে কোনও দ্বিতীয় ডেটা কাঠামো তৈরি করার প্রয়োজন হয় না।