LINQ (Language Integrated Query) এর সাহায্যে আপনি সহজেই Custom Classes এবং Collections এ ডেটা ম্যানিপুলেট, ফিল্টার এবং প্রসেস করতে পারেন। LINQ সাধারণত IEnumerable বা IQueryable টাইপের ডেটা কাঠামোতে কাজ করে, এবং এর মাধ্যমে আপনি যে কোনো Collection বা Custom Class এর উপর কুয়েরি অপারেশন চালাতে পারেন, যদি তারা এই ইন্টারফেসগুলি ইমপ্লিমেন্ট করে।
এই টিউটোরিয়ালে, আমরা Custom Classes এবং Collections এর উপর LINQ কীভাবে প্রয়োগ করা হয় তা দেখব।
প্রথমে, আমরা একটি Custom Class তৈরি করব এবং তারপর LINQ এর সাহায্যে তার উপর বিভিন্ন কুয়েরি প্রয়োগ করব।
ধরা যাক, আমাদের একটি Employee ক্লাস রয়েছে, যেখানে ID, Name, Age, এবং Salary প্রোপার্টি রয়েছে।
using System;
using System.Collections.Generic;
using System.Linq;
class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public double Salary { get; set; }
}
আমরা একটি List তৈরি করব এবং তার উপর LINQ ব্যবহার করে বিভিন্ন অপারেশন প্রয়োগ করব।
using System;
using System.Collections.Generic;
using System.Linq;
class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public double Salary { get; set; }
}
class Program
{
static void Main()
{
// Custom class এর একটি List তৈরি
List<Employee> employees = new List<Employee>
{
new Employee { ID = 1, Name = "Alice", Age = 30, Salary = 50000 },
new Employee { ID = 2, Name = "Bob", Age = 35, Salary = 60000 },
new Employee { ID = 3, Name = "Charlie", Age = 40, Salary = 70000 },
new Employee { ID = 4, Name = "David", Age = 25, Salary = 45000 }
};
// LINQ কুয়েরি প্রয়োগ
var highEarners = from e in employees
where e.Salary > 50000
select e;
// ফলাফল প্রদর্শন
foreach (var employee in highEarners)
{
Console.WriteLine($"{employee.Name} earns {employee.Salary}");
}
}
}
আউটপুট:
Bob earns 60000
Charlie earns 70000
এখানে, আমরা Salary এর ভিত্তিতে filter করেছি এবং Where শর্ত ব্যবহার করেছি। LINQ ব্যবহার করে সহজেই Employee ক্লাসের উপর কুয়েরি করা হয়েছে।
এখন, আমরা দেখব কিভাবে Collections (যেমন, List<T>
, Dictionary<K, V>
, Queue<T>
, Stack<T>
) এর উপর LINQ প্রয়োগ করা যায়।
List<T>
এর উপর LINQ কুয়েরিusing System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 10, 20, 30, 40, 50, 60, 70 };
// LINQ কুয়েরি: সংখ্যাগুলোর মধ্যে যেগুলো 30 এর বড়
var filteredNumbers = from n in numbers
where n > 30
select n;
// ফলাফল প্রদর্শন
foreach (var number in filteredNumbers)
{
Console.WriteLine(number);
}
}
}
আউটপুট:
40
50
60
70
এখানে, আমরা List এর উপর LINQ কুয়েরি প্রয়োগ করেছি, যেখানে Where শর্ত ব্যবহার করে 30 এর বেশি সংখ্যাগুলি ফিল্টার করা হয়েছে।
Dictionary<K, V>
এর উপর LINQ কুয়েরিusing System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
Dictionary<int, string> students = new Dictionary<int, string>
{
{ 1, "Alice" },
{ 2, "Bob" },
{ 3, "Charlie" },
{ 4, "David" }
};
// LINQ কুয়েরি: ID অনুযায়ী নামের তালিকা পাওয়া
var studentNames = from s in students
where s.Key % 2 == 0
select s.Value;
// ফলাফল প্রদর্শন
foreach (var name in studentNames)
{
Console.WriteLine(name);
}
}
}
আউটপুট:
Bob
David
এখানে, আমরা Dictionary<int, string> এর উপর LINQ কুয়েরি ব্যবহার করেছি এবং Key এর ভিত্তিতে filtering করেছি।
Queue<T>
এর উপর LINQ কুয়েরিusing System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
Queue<string> queue = new Queue<string>();
queue.Enqueue("Alice");
queue.Enqueue("Bob");
queue.Enqueue("Charlie");
queue.Enqueue("David");
// LINQ কুয়েরি: Queue তে থাকা নামগুলোর মধ্যে যেগুলো "B" দিয়ে শুরু
var filteredQueue = from name in queue
where name.StartsWith("B")
select name;
// ফলাফল প্রদর্শন
foreach (var name in filteredQueue)
{
Console.WriteLine(name);
}
}
}
আউটপুট:
Bob
এখানে Queue এর উপর LINQ কুয়েরি প্রয়োগ করা হয়েছে এবং StartsWith মেথড ব্যবহার করে নির্দিষ্ট কন্ডিশন অনুযায়ী ফিল্টার করা হয়েছে।
LINQ এর সাহায্যে আপনি Custom Classes এবং Collections এর উপর খুবই সহজে এবং কার্যকরীভাবে ডেটা ম্যানিপুলেট করতে পারেন। LINQ এর সুবিধা হলো এটি কোডকে আরও পরিষ্কার, রিডেবল এবং সংক্ষিপ্ত করে, পাশাপাশি ডেটার সাথে কাজ করার সময় পারফরম্যান্স অপটিমাইজেশনও করতে পারে।
common.read_more