LINQ (Language Integrated Query) হলো সি#-এ একটি শক্তিশালী টুল, যা বিভিন্ন ডেটা সোর্স থেকে সহজ এবং সংক্ষিপ্ত উপায়ে ডেটা রিটার্ন এবং ম্যানিপুলেট করতে সাহায্য করে। LINQ বিভিন্ন ধরনের ডেটা সোর্স, যেমন অ্যারে, লিস্ট, ডাটাবেস এবং XML থেকে ডেটা এক্সেস ও প্রসেস করতে ব্যবহৃত হয়।
LINQ-এর দুটি মূল সিনট্যাক্স রয়েছে:
কোয়েরি সিনট্যাক্স SQL-এর মতো দেখতে এবং সহজেই বুঝতে পারা যায়। এটি সাধারণত from
, where
, select
এবং অন্যান্য কীওয়ার্ড ব্যবহার করে।
উদাহরণ: একটি ইনটিজার তালিকা থেকে জোড় সংখ্যাগুলি বের করা
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// কোয়েরি সিনট্যাক্স ব্যবহার করে জোড় সংখ্যা ফিল্টার করা
var evenNumbers = from num in numbers
where num % 2 == 0
select num;
Console.WriteLine("Even Numbers:");
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
}
}
উপরের উদাহরণে:
from num in numbers
: numbers
তালিকা থেকে num
নামে একটি ভেরিয়েবল নির্বাচিত করা হয়েছে।where num % 2 == 0
: যেখানে num
জোড় সংখ্যা, সেই আইটেমগুলো ফিল্টার করা হচ্ছে।select num
: ফিল্টার করা সংখ্যাগুলো নির্বাচন করা হচ্ছে।মেথড সিনট্যাক্সে ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে বিভিন্ন মেথড কল করা হয়। এটি অনেক ফ্লেক্সিবল এবং ফাংশনাল প্রোগ্রামিং স্টাইলের জন্য প্রযোজ্য।
উদাহরণ: একটি স্ট্রিং তালিকা থেকে নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং খুঁজে বের করা
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<string> words = new List<string> { "apple", "banana", "cherry", "date", "fig", "grape" };
// মেথড সিনট্যাক্স ব্যবহার করে ৫ অক্ষরের শব্দ ফিল্টার করা
var fiveLetterWords = words.Where(word => word.Length == 5).ToList();
Console.WriteLine("Words with 5 letters:");
fiveLetterWords.ForEach(word => Console.WriteLine(word));
}
}
এখানে:
words.Where(word => word.Length == 5)
: words
তালিকার মধ্যে সেই শব্দগুলো ফিল্টার করা হয়েছে যেগুলোর দৈর্ঘ্য ৫।.ToList()
: ফিল্টারকৃত ফলাফলকে তালিকা আকারে কনভার্ট করা হয়েছে।LINQ-এ অনেক গুরুত্বপূর্ণ অপারেটর রয়েছে, যেগুলো ডেটা ফিল্টারিং, সাজানো, গ্রুপিং, এবং বিভিন্ন ধরনের জটিল কাজ করতে ব্যবহৃত হয়। নিচে কয়েকটি উল্লেখযোগ্য অপারেটর সহ উদাহরণ দেওয়া হলো:
Select
: একটি সংগ্রহের প্রতিটি আইটেমের ওপর প্রক্রিয়াকরণ করে একটি নতুন সংগ্রহ তৈরি করতে।List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var squares = numbers.Select(num => num * num).ToList(); // { 1, 4, 9, 16, 25 }
Where
: ফিল্টার করার জন্য ব্যবহৃত হয়।List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(num => num % 2 == 0).ToList(); // { 2, 4 }
OrderBy
এবং OrderByDescending
: ক্রম বা বিপরীত ক্রমে সাজানোর জন্য।List<string> names = new List<string> { "John", "Anna", "Zara", "Michael" };
var sortedNames = names.OrderBy(name => name).ToList(); // Ascending order
var descendingNames = names.OrderByDescending(name => name).ToList(); // Descending order
GroupBy
: নির্দিষ্ট কী অনুযায়ী গ্রুপ করতে।List<string> names = new List<string> { "John", "Jake", "Anna", "Zara" };
var groupedNames = names.GroupBy(name => name[0]); // Group by first letter
foreach (var group in groupedNames)
{
Console.WriteLine("Group: " + group.Key);
foreach (var name in group)
{
Console.WriteLine(name);
}
}
Sum
, Count
, Average
, Min
, Max
: সংক্ষেপক ফাংশন।List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int sum = numbers.Sum(); // 15
int count = numbers.Count(); // 5
double average = numbers.Average(); // 3
int min = numbers.Min(); // 1
int max = numbers.Max(); // 5
নিচে একটি উদাহরণ দেওয়া হলো যেখানে একাধিক অপারেটর একসাথে ব্যবহৃত হয়েছে।
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// জোড় সংখ্যা ফিল্টার করা, তারপর তা বর্গ করে এবং অবশেষে সাজানো
var query = numbers
.Where(num => num % 2 == 0)
.Select(num => num * num)
.OrderByDescending(num => num)
.ToList();
Console.WriteLine("Even squares in descending order:");
query.ForEach(num => Console.WriteLine(num));
}
}
এখানে:
Where(num => num % 2 == 0)
: জোড় সংখ্যা ফিল্টার করা।Select(num => num * num)
: প্রতিটি সংখ্যার বর্গ বের করা।OrderByDescending(num => num)
: বর্গকৃত সংখ্যা ডেসেন্ডিং অর্ডারে সাজানো।LINQ হলো সি#-এ ডেটা প্রসেসিং এবং কনডিশন-ভিত্তিক কুয়েরি চালানোর একটি সহজ এবং সংক্ষিপ্ত উপায়। কোয়েরি এবং মেথড সিনট্যাক্সের মাধ্যমে LINQ প্রোগ্রামিংকে আরও সহজ করে তোলে এবং ডেটা ম্যানিপুলেশনে খুব কার্যকর।
আরও দেখুন...