Skip to content

পোস্ট

কালেকশন কম্পেয়ারার, দুটি কালেকশনের মধ্যে পার্থক্য খুঁজে বের করা

২২ জুলাই, ২০১৯ • 2 মিনিট পড়া

কালেকশন কম্পেয়ারার, দুটি কালেকশনের মধ্যে পার্থক্য খুঁজে বের করা

আপনাকে কি দুটি কালেকশন তুলনা করতে এবং আইটেমটি সোর্স কালেকশনে আছে, তুলনা করা কালেকশনে আছে নাকি উভয়েই আছে তার উপর ভিত্তি করে কিছু লজিক এক্সিকিউট করতে হয়েছে? হ্যাঁ, আমার ও হয়েছে, আমাকে UI এবং ডাটাবেস থেকে ডেটা মার্জ করতে হয়েছিল। আমি কোনো ভালো সমাধান খুঁজে পাইনি, তাই আমি একটি কালেকশন কম্পেয়ারার লিখেছি।

এটি কীভাবে কাজ করে তা বুঝানোর জন্য আসুন একটি উদাহরণ দেখি।

সোর্স ডেটায় আমাদের কাছে মান 1, 3, 4, 6 আছে, এবং তুলনা করা
কালেকশনে আমাদের কাছে মান 1, 2, 3, 4, 5 আছে।

তুলনা করা কালেকশনের সাথে তুলনা করলে সোর্স ডেটায় 2 এবং 5 নেই, এবং সোর্স কালেকশনের সাথে তুলনা করলে তুলনা করা কালেকশনে 6 নেই।

আসুন এই মার্জটি ধাপে ধাপে দেখি:

  1. উভয়েই আছে (আপডেট করুন)
  2. শুধুমাত্র তুলনা করা কালেকশনে আছে (সোর্সে যোগ করুন)
  3. উভয়েই আছে (আপডেট করুন)
  4. উভয়েই আছে (আপডেট করুন)
  5. শুধুমাত্র তুলনা করা কালেকশনে আছে (সোর্সে যোগ করুন)
  6. শুধুমাত্র সোর্স কালেকশনে আছে (সোর্স থেকে সরান)

এখানে কোডটি কেমন দেখায়:

var source = new []{1, 3, 4, 6};
var collection = new[] {1, 2, 3, 4, 5};

source.CompareTo(collection, (s, d) => s == d)
    .OnlyInSourceCollection(s=> {/* do something */})
    .OnlyInComparingCollection(s=>{/* do something */})
    .InBoth(s=> {/*do something*/})
    .Process();

LINQ ব্যবহার করবেন না কেন?

আপনি LINQ ব্যবহার করতে পারেন, তবে LINQ কালেকশনগুলি কমপক্ষে 3 বার পুনরাবৃত্তি করবে যা ডেটা পরিচালনা (যোগ করা, আপডেট করা এবং মুছে ফেলা) অন্তর্ভুক্ত করে না। CollectionComparer ব্যবহার করে, ডেটা শুধুমাত্র দুইবার পুনরাবৃত্তি হয়।

পার্থক্য খুঁজে বের করার জন্য দ্রুততর উপায় রয়েছে যেমন বাইনারি সার্চ, তবে বাইনারি সার্চ শুধুমাত্র পূর্ণসংখ্যার সাথে কাজ করে। কালেকশন কম্পেয়ারার যেকোনো ধরনের তুলনা সমর্থন করে। তুলনাটি এই কোডের সাথে সংজ্ঞায়িত করা হয়: (s, d) => s == d

সোর্স কোড GitHub এ পাওয়া যায়।

লেখক: চাক কনওয়ে একজন এআই ইঞ্জিনিয়ার যার কাছে প্রায় ৩০ বছরের সফটওয়্যার ইঞ্জিনিয়ারিং অভিজ্ঞতা রয়েছে। তিনি ব্যবহারিক এআই সিস্টেম তৈরি করেন—কন্টেন্ট পাইপলাইন, অবকাঠামো এজেন্ট এবং সরঞ্জাম যা বাস্তব সমস্যার সমাধান করে—এবং তার শেখার বিষয়গুলি শেয়ার করেন। তার সাথে সোশ্যাল মিডিয়ায় সংযোগ করুন: X (@chuckconway) অথবা তাকে YouTube এবং SubStack এ দেখুন।

↑ শীর্ষে ফিরে যান

আপনি এটিও পছন্দ করতে পারেন