LINQ এর মাধ্যমে ডেটা কুয়েরি করা
LINQ (Language Integrated Query) হল একটি শক্তিশালী কনসেপ্ট যা ডেটা কুয়েরি (querying) এবং ডেটা ম্যানিপুলেশনকে C# এবং F# এর মতো .NET ভাষার সাথে গভীরভাবে একীভূত করে। LINQ এর মাধ্যমে আপনি অ্যারে, তালিকা, ডাটাবেস, XML ডকুমেন্ট, ইত্যাদি থেকে ডেটা কুয়েরি করতে পারেন। এটি একটি declarative পদ্ধতিতে ডেটা কুয়েরি করার জন্য ব্যবহৃত হয়, যেখানে আপনি কুয়েরি ভাষার মতো কোড ব্যবহার করতে পারেন।
F# এ LINQ ব্যবহার করার জন্য F# LINQ এবং .NET LINQ API ব্যবহার করা যায়। F# এ LINQ এর মাধ্যমে ডেটা কুয়েরি করার জন্য মূলত Seq (sequence) লাইব্রেরি এবং LINQ এর স্টাইল ব্যবহার করা হয়।
১. LINQ এর মাধ্যমে ডেটা কুয়েরি
F# এ LINQ এর মাধ্যমে ডেটা কুয়েরি করার জন্য LINQ method syntax অথবা LINQ query syntax ব্যবহার করা যেতে পারে। Seq বা List মতো কালেকশনগুলির উপর LINQ অপারেশন করা সম্ভব।
উদাহরণ: LINQ Method Syntax
// Creating a list of numbers
let numbers = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
// LINQ Method Syntax: Filtering even numbers and squaring them
let result = numbers |> Seq.filter (fun x -> x % 2 = 0) // Filtering even numbers
|> Seq.map (fun x -> x * x) // Squaring the even numbers
// Printing the result
printfn "%A" result // আউটপুট: [4; 16; 36; 64; 100]ব্যাখ্যা:
Seq.filterব্যবহৃত হয়েছে এমন সংখ্যা ফিল্টার করার জন্য যা even (যেগুলি ২ দ্বারা বিভাজ্য)।Seq.mapব্যবহার করা হয়েছে ফিল্টার করা সংখ্যাগুলির বর্গফল বের করার জন্য।|>পাইপ অপারেটর ব্যবহার করা হয়েছে একাধিক অপারেশন চেইন করার জন্য।
২. LINQ Query Syntax
LINQ Query Syntax-এ, C# এর মতো F# এ আরও প্রথাগত SQL ধরনের স্টাইল ব্যবহৃত হয়। এটি আরও declarative পদ্ধতিতে কুয়েরি লেখার জন্য সুবিধাজনক।
উদাহরণ: LINQ Query Syntax
// Creating a list of numbers
let numbers = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10]
// LINQ Query Syntax: Filtering even numbers and squaring them
let result =
query {
for x in numbers do
where (x % 2 = 0)
select (x * x)
}
// Printing the result
printfn "%A" result // আউটপুট: [4; 16; 36; 64; 100]ব্যাখ্যা:
queryব্লকের মধ্যে LINQ স্টাইলের কুয়েরি লেখা হয়েছে যেখানেfor,where, এবংselectকিওয়ার্ড ব্যবহার করা হয়েছে।whereশর্ত ব্যবহার করে even সংখ্যা ফিল্টার করা হয়েছে এবংselectদিয়ে তাদের বর্গফল নির্বাচন করা হয়েছে।
৩. LINQ Join
LINQ এর মাধ্যমে একাধিক কলেকশনের মধ্যে join করা যায়। এটি বিভিন্ন ডেটা সঞ্চয়ের মধ্যে সম্পর্ক তৈরি করার জন্য ব্যবহৃত হয়।
উদাহরণ: LINQ Join Syntax
// Two collections
let students = [ ("John", 1); ("Alice", 2); ("Bob", 3) ]
let courses = [ (1, "Math"); (2, "Science"); (3, "History") ]
// LINQ Join: Joining students and courses by student ID
let result =
query {
for student in students do
join course in courses on student.Item2 equals course.Item1
select (student.Item1, course.Item2)
}
// Printing the result
printfn "%A" result // আউটপুট: [("John", "Math"); ("Alice", "Science"); ("Bob", "History")]ব্যাখ্যা:
- দুটি তালিকা
studentsএবংcoursesআছে, যেখানে প্রথমে student এর নাম এবং তাদের আইডি রয়েছে এবং দ্বিতীয় তালিকায় কোর্সের আইডি এবং নাম রয়েছে। joinঅপারেটর ব্যবহার করে student এর আইডি এবং course এর আইডি মিলিয়ে তাদের সম্পর্ক তৈরি করা হয়েছে।
৪. LINQ GroupBy
LINQ এর GroupBy অপারেশন ব্যবহার করে আপনি একটি集合ের ডেটাকে একটি নির্দিষ্ট কী এর উপর গ্রুপ করতে পারেন।
উদাহরণ: LINQ GroupBy
// List of students with their grades
let students = [ ("John", "A"); ("Alice", "B"); ("Bob", "A"); ("Diana", "C"); ("Eve", "B") ]
// Group students by their grades
let grouped =
query {
for student in students do
groupBy student.Item2 into g
select (g.Key, g |> Seq.toList)
}
// Printing the result
printfn "%A" grouped // আউটপুট: [("A", [("John", "A"); ("Bob", "A")]); ("B", [("Alice", "B"); ("Eve", "B")]); ("C", [("Diana", "C")])]ব্যাখ্যা:
- এখানে
groupByঅপারেটর ব্যবহার করে ছাত্রদের গ্রেডের উপর ভিত্তি করে তাদের গ্রুপ করা হয়েছে। এর ফলে, প্রতিটি গ্রেডের জন্য ছাত্রদের একটি তালিকা তৈরি হয়েছে।
৫. LINQ Aggregate Functions
LINQ এর মাধ্যমে aggregate functions যেমন Sum, Average, Max, Min ইত্যাদি ব্যবহার করে আপনি কোলেকশনগুলির উপর সমষ্টিগত অপারেশন করতে পারেন।
উদাহরণ: LINQ Aggregate Functions
// List of numbers
let numbers = [1; 2; 3; 4; 5]
// Using LINQ to calculate the sum
let sum =
query {
for num in numbers do
sumBy (fun x -> x) num
}
// Printing the result
printfn "Sum: %d" sum // আউটপুট: Sum: 15ব্যাখ্যা:
sumByব্যবহার করে একটি সংখ্যা তালিকার মোট যোগফল বের করা হয়েছে।
উপসংহার
LINQ F# এ ডেটা কুয়েরি করার একটি শক্তিশালী এবং সুসংগঠিত পদ্ধতি প্রদান করে। Method Syntax এবং Query Syntax দিয়ে আপনি ডেটা কুয়েরি, ফিল্টারিং, গ্রুপিং, যোগফল বের করা, এবং অন্যান্য কোলেকশন অপারেশন সহজে করতে পারেন। LINQ এর ব্যবহার F# তে ডেটা ম্যানিপুলেশনকে আরও পরিষ্কার এবং কার্যকরী করে তোলে, এবং বিভিন্ন ধরণের ডেটা স্ট্রাকচারে একই কুয়েরি প্রক্রিয়া প্রয়োগ করতে সহায়তা করে।
Read more