Dynamic LINQ ব্যবহার করে আপনি সময় চলতি ডেটা বা শর্তের ভিত্তিতে LINQ কুয়েরি তৈরি এবং এক্সিকিউট করতে পারেন। এটি বিশেষত তখন কাজে আসে যখন আপনাকে কুয়েরি শর্তগুলো রানটাইমে ডাইনামিক্যালি তৈরি করতে হয়, অর্থাৎ কোড লিখার সময় না জানলেও, বিভিন্ন ইনপুট বা কন্ডিশনের উপর ভিত্তি করে কুয়েরি তৈরি এবং চালানো যায়।
Dynamic LINQ লাইব্রেরি মূলত LINQ কুয়েরি স্টেটমেন্টগুলোর জন্য ডাইনামিক কুয়েরি সমর্থন দেয়। এটি LINQ.Expressions এবং System.Linq.Dynamic.Core নামে দুটি সাধারণ লাইব্রেরি ব্যবহার করে। এ লাইব্রেরিগুলোর সাহায্যে আমরা LINQ কুয়েরির শর্তগুলো স্ট্রিং হিসেবে পাস করতে পারি এবং runtime এ কুয়েরি তৈরি ও এক্সিকিউট করতে পারি।
Dynamic LINQ ব্যবহার করার জন্য আপনাকে System.Linq.Dynamic.Core প্যাকেজটি ইনস্টল করতে হবে। এটি NuGet প্যাকেজ হিসেবে পাওয়া যায়।
Install-Package System.Linq.Dynamic.Core
Visual Studio তে NuGet প্যাকেজ ম্যানেজার ব্যবহার করে এটি ইনস্টল করতে পারেন।
ধরা যাক, আমাদের একটি Person
ক্লাস আছে এবং আমরা ডাইনামিকভাবে Age এবং Name এর ওপর ভিত্তি করে কুয়েরি তৈরি করতে চাই।
using System;
using System.Linq;
using System.Linq.Dynamic.Core; // Dynamic LINQ এর জন্য
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var people = new[]
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 },
new Person { Name = "David", Age = 40 }
};
// ডাইনামিক কুয়েরি তৈরি করা
var dynamicQuery = people.AsQueryable().Where("Age > 30");
foreach (var person in dynamicQuery)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
এখানে:
Where("Age > 30")
স্ট্রিং আকারে কুয়েরি শর্ত প্রদান করা হয়েছে।AsQueryable()
ব্যবহার করা হয়েছে যাতে LINQ কুয়েরি সমর্থন পাওয়া যায়।এটি Age
এর মান ৩০ এর বেশি এমন Person গুলি নির্বাচন করবে এবং তাদের নাম ও বয়স প্রিন্ট করবে।
কিছু শর্ত একাধিক হতে পারে এবং এগুলোও রানটাইমে স্ট্রিং আকারে নির্দিষ্ট করা যাবে। ধরুন, আমাদের দুটি শর্ত দিতে হবে, যেমন Age ৩০ এর বেশি এবং Name "Bob" না।
using System;
using System.Linq;
using System.Linq.Dynamic.Core;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var people = new[]
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 },
new Person { Name = "David", Age = 40 }
};
// Multiple conditions
var dynamicQuery = people.AsQueryable().Where("Age > 30 AND Name != 'Bob'");
foreach (var person in dynamicQuery)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
এখানে:
Where("Age > 30 AND Name != 'Bob'")
একটি কমপ্লেক্স শর্ত ব্যবহার করা হয়েছে যেখানে দুটি শর্ত একসাথে দেওয়া হয়েছে। প্রথম শর্তে Age
৩০ এর বেশি হতে হবে, এবং দ্বিতীয় শর্তে Name
"Bob" না হতে হবে।এটি Charlie এবং David এর নাম এবং বয়স প্রিন্ট করবে।
ডাইনামিকভাবে শুধুমাত্র কিছু নির্দিষ্ট প্রোপার্টি নির্বাচন করার জন্য Select ব্যবহার করা যেতে পারে।
using System;
using System.Linq;
using System.Linq.Dynamic.Core;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var people = new[]
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 },
new Person { Name = "David", Age = 40 }
};
// Select only specific fields using dynamic LINQ
var dynamicQuery = people.AsQueryable().Where("Age > 30").Select("Name");
foreach (var name in dynamicQuery)
{
Console.WriteLine(name); // Output: Charlie, David
}
}
}
এখানে:
Select("Name")
ব্যবহার করে আমরা শুধুমাত্র Name
প্রোপার্টি নির্বাচন করেছি।এছাড়া, Dynamic LINQ এর method syntax ব্যবহার করেও কোড লেখা যেতে পারে। এই ক্ষেত্রে Where()
বা Select()
মেথডগুলো স্ট্রিং আকারে কুয়েরি ব্যবহার করতে পারবে।
using System;
using System.Linq;
using System.Linq.Dynamic.Core;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var people = new[]
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 35 },
new Person { Name = "David", Age = 40 }
};
// Method syntax with dynamic LINQ
var dynamicQuery = people.AsQueryable().Where("Age > 30").Select("Name");
foreach (var name in dynamicQuery)
{
Console.WriteLine(name); // Output: Charlie, David
}
}
}
এখানে:
Where("Age > 30")
এবং Select("Name")
স্ট্রিং আকারে কুয়েরি শর্ত এবং নির্বাচন ব্যবহার করা হয়েছে।Dynamic LINQ আপনাকে কোড চলাকালীন সময়ে কুয়েরি তৈরি এবং এক্সিকিউট করার সুবিধা দেয়। এটি ডাইনামিক কুয়েরি তৈরির জন্য স্ট্রিং বা রানটাইম ইনপুট ব্যবহার করে কাজ করে, যা অত্যন্ত কার্যকরী যখন ডেটা এবং কুয়েরি শর্ত আগে থেকে জানা থাকে না। System.Linq.Dynamic.Core
লাইব্রেরি ব্যবহারের মাধ্যমে আপনি বিভিন্ন শর্ত, নির্বাচন, এবং মডিফিকেশন খুব সহজে করতে পারেন।
common.read_more