LINQ ব্যবহার করে ডুপ্লিকেট ডেটা ফিল্টার করা বা অপসারণ করা খুবই সহজ। এর জন্য Distinct() মেথডটি ব্যবহার করা হয়। এই মেথডটি একটি সংগ্রহের মধ্যে থেকে শুধুমাত্র ইউনিক (অব্যক্ত) মানগুলি ফিরিয়ে আনে, অর্থাৎ যেসব মান একাধিকবার রয়েছে, সেগুলো শুধুমাত্র একবার প্রদর্শিত হবে।
Distinct()
মেথড একটি সংগ্রহ বা সিকোয়েন্স থেকে ডুপ্লিকেট উপাদানগুলো সরিয়ে ফেলতে সাহায্য করে। এটি method syntax এর মাধ্যমে ব্যবহার করা হয়, যেমন:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 1, 2, 6, 7, 3 };
// Distinct() ব্যবহার করে ডুপ্লিকেট অপসারণ করা
var distinctNumbers = numbers.Distinct();
foreach (var number in distinctNumbers)
{
Console.WriteLine(number); // Output: 1, 2, 3, 4, 5, 6, 7
}
এখানে, Distinct()
মেথড ব্যবহার করে numbers
লিস্ট থেকে ডুপ্লিকেট সংখ্যা গুলো সরিয়ে দেয়া হয়েছে।
Query syntax ব্যবহার করে Distinct()
মেথড ব্যবহার করতে হলে আপনি distinct
কিওয়ার্ড ব্যবহার করবেন, যেমন:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 1, 2, 6, 7, 3 };
// Distinct() ব্যবহার করে ডুপ্লিকেট অপসারণ করা (Query Syntax)
var distinctNumbers = from num in numbers
select num;
foreach (var number in distinctNumbers.Distinct())
{
Console.WriteLine(number); // Output: 1, 2, 3, 4, 5, 6, 7
}
এখানে, distinct
কিওয়ার্ড ব্যবহার করে লিস্ট থেকে ডুপ্লিকেট মানগুলি সরিয়ে দেয়া হয়েছে।
যদি আপনার ডেটা একটি কাস্টম অবজেক্টের লিস্ট হয় (যেমন একটি Person
ক্লাস), এবং আপনি চান যে একাধিক কাস্টম অবজেক্টের মধ্যে যদি কোন প্রপার্টি বা ক্ষেত্রের মান সমান হয়, তবে তা ডুপ্লিকেট হিসেবে গণ্য হবে, তাহলে Distinct() ব্যবহারের জন্য IEqualityComparer ইন্টারফেসটি ব্যবহার করতে হয়।
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Charlie", Age = 35 }
};
// Custom Distinct (Name এবং Age এর ভিত্তিতে)
var distinctPeople = people.Distinct(new PersonComparer());
foreach (var person in distinctPeople)
{
Console.WriteLine($"{person.Name}, {person.Age}");
}
// Custom IEqualityComparer
public class PersonComparer : IEqualityComparer<Person>
{
public bool Equals(Person x, Person y)
{
if (x == null || y == null)
return false;
return x.Name == y.Name && x.Age == y.Age;
}
public int GetHashCode(Person obj)
{
return obj.Name.GetHashCode() ^ obj.Age.GetHashCode();
}
}
এখানে:
PersonComparer
একটি কাস্টম IEqualityComparer ক্লাস যা Name এবং Age এর ভিত্তিতে দুইটি Person
অবজেক্টের সমানতা পরীক্ষা করে।Distinct()
মেথড এই কাস্টম কম্পেয়ারার ব্যবহার করে ডুপ্লিকেট Person
অবজেক্টগুলো সরিয়ে ফেলছে।আউটপুট:
Alice, 30
Bob, 25
Charlie, 35
এখানে, একই নাম এবং বয়সের দুটি Person
অবজেক্টকে ডুপ্লিকেট হিসেবে ধরা হয়েছে এবং শুধুমাত্র একবার প্রদর্শন করা হয়েছে।
Distinct()
মেথডটি শুধুমাত্র সাদামাটা (primitive) ধরনের ডেটার জন্য কাজ করে, যেমন int
, string
, float
ইত্যাদি।LINQ এর Distinct() মেথড ব্যবহার করে ডুপ্লিকেট ডেটা সহজে ফিল্টার করা সম্ভব। এটি List
, Array
, বা যে কোন আইটেমের সিকোয়েন্সের মধ্যে ডুপ্লিকেট উপাদান সরিয়ে ফেলতে সাহায্য করে। কাস্টম অবজেক্টের জন্য IEqualityComparer প্রয়োগের মাধ্যমে ডুপ্লিকেট চেক করা যায়।
common.read_more