LINQ ব্যবহার করে Data Query এবং Manipulation

Microsoft Technologies - উইন্ডোজ কমিউনিকেশন সিস্টেম (WCF) - WCF Data Service এবং LINQ Integration
186

LINQ (Language Integrated Query) হল একটি শক্তিশালী টুল যা C# (এবং .NET ভাষাগুলিতে) ডেটাবেস, ইন-মেমরি ডেটা, XML ডেটা, এবং অন্যান্য ডেটা সোর্সের উপর প্রশ্ন করার (querying) এবং ডেটা ম্যানিপুলেট (manipulating) করার একটি একীভূত পদ্ধতি সরবরাহ করে। LINQ এর মাধ্যমে কোডে SQL এর মতো প্রশ্ন তৈরি করা যায়, তবে এটি সম্পূর্ণরূপে টাইপ সেফ (type-safe) এবং ডেভেলপারকে সহজভাবে ডেটা পরিচালনা করার ক্ষমতা প্রদান করে।

LINQ দ্বারা ডেটা query এবং manipulation করার জন্য LINQ to Objects, LINQ to SQL, LINQ to Entities, LINQ to XML, ইত্যাদি ব্যবহার করা যেতে পারে। এখানে, আমরা LINQ to Objects এর মাধ্যমে ইন-মেমরি ডেটা query এবং manipulation এর কিছু উদাহরণ দেখব।


১. LINQ to Objects

LINQ to Objects হল LINQ এর একটি ফিচার যা ইন-মেমরি কালেকশনের (যেমন Array, List, Dictionary) উপর query করার ক্ষমতা দেয়। এটি খুবই সহজ এবং ব্যবহারযোগ্য।

উদাহরণ ১: LINQ ব্যবহার করে একটি List এর মধ্যে ডেটা query করা

ধরা যাক, আমাদের একটি Student ক্লাস আছে এবং আমরা List নামক একটি কালেকশন তৈরি করেছি। এখন, LINQ ব্যবহার করে কিছু query করা যাবে।

using System;
using System.Linq;
using System.Collections.Generic;

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

class Program
{
    static void Main()
    {
        // Student এর একটি List তৈরি করা
        List<Student> students = new List<Student>
        {
            new Student { Name = "John", Age = 20, City = "New York" },
            new Student { Name = "Alice", Age = 22, City = "Los Angeles" },
            new Student { Name = "Bob", Age = 24, City = "Chicago" },
            new Student { Name = "Eve", Age = 21, City = "New York" }
        };

        // LINQ Query: Age 22 এর বেশি এমন students কে বের করা
        var olderStudents = from student in students
                            where student.Age > 22
                            select student;

        // ফলাফল প্রদর্শন
        foreach (var student in olderStudents)
        {
            Console.WriteLine($"Name: {student.Name}, Age: {student.Age}, City: {student.City}");
        }
    }
}

এখানে:

  • from student in students - ছাত্রদের তালিকা থেকে একে একে প্রত্যেক ছাত্রের উপরে query চলবে।
  • where student.Age > 22 - ছাত্রের বয়স ২২ এর বেশি হলে তা নির্বাচিত হবে।
  • select student - নির্বাচিত ছাত্রদের ফলাফল দেবে।

আউটপুট:

Name: Bob, Age: 24, City: Chicago

উদাহরণ ২: LINQ ব্যবহার করে একটি List কে সজ্জিত করা

LINQ ব্যবহার করে আমরা একটি List এর ডেটা সাজাতে (sort) পারি।

using System;
using System.Linq;
using System.Collections.Generic;

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

class Program
{
    static void Main()
    {
        // Student এর একটি List তৈরি করা
        List<Student> students = new List<Student>
        {
            new Student { Name = "John", Age = 20, City = "New York" },
            new Student { Name = "Alice", Age = 22, City = "Los Angeles" },
            new Student { Name = "Bob", Age = 24, City = "Chicago" },
            new Student { Name = "Eve", Age = 21, City = "New York" }
        };

        // LINQ Query: students কে Age অনুসারে সাজানো
        var sortedStudents = from student in students
                             orderby student.Age
                             select student;

        // ফলাফল প্রদর্শন
        foreach (var student in sortedStudents)
        {
            Console.WriteLine($"Name: {student.Name}, Age: {student.Age}, City: {student.City}");
        }
    }
}

এখানে:

  • orderby student.Age - ছাত্রদের বয়স অনুসারে সজ্জিত করা হচ্ছে।

আউটপুট:

Name: John, Age: 20, City: New York
Name: Eve, Age: 21, City: New York
Name: Alice, Age: 22, City: Los Angeles
Name: Bob, Age: 24, City: Chicago

উদাহরণ ৩: LINQ ব্যবহার করে ডেটা পরিবর্তন করা (Manipulate)

LINQ ব্যবহার করে আপনি ডেটাকে পরিবর্তনও (update) করতে পারেন। তবে, LINQ মূলত ডেটা প্রশ্ন করার জন্য ব্যবহৃত হয়, পরিবর্তনের জন্য আপনি ForEach বা Lambda Expression ব্যবহার করতে পারেন।

using System;
using System.Linq;
using System.Collections.Generic;

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

class Program
{
    static void Main()
    {
        // Student এর একটি List তৈরি করা
        List<Student> students = new List<Student>
        {
            new Student { Name = "John", Age = 20, City = "New York" },
            new Student { Name = "Alice", Age = 22, City = "Los Angeles" },
            new Student { Name = "Bob", Age = 24, City = "Chicago" },
            new Student { Name = "Eve", Age = 21, City = "New York" }
        };

        // LINQ Query: Age 20 এর বেশি এমন students এর City পরিবর্তন করা
        var updatedStudents = students.Where(s => s.Age > 20).ToList();

        updatedStudents.ForEach(s => s.City = "San Francisco");

        // পরিবর্তিত ফলাফল প্রদর্শন
        foreach (var student in students)
        {
            Console.WriteLine($"Name: {student.Name}, Age: {student.Age}, City: {student.City}");
        }
    }
}

এখানে:

  • Where(s => s.Age > 20) - ছাত্রদের বয়স ২০ এর বেশি হলে তাদের নির্বাচন করা হয়েছে।
  • ForEach(s => s.City = "San Francisco") - নির্বাচনকৃত ছাত্রদের শহর (City) আপডেট করা হয়েছে।

আউটপুট:

Name: John, Age: 20, City: New York
Name: Alice, Age: 22, City: San Francisco
Name: Bob, Age: 24, City: San Francisco
Name: Eve, Age: 21, City: San Francisco

২. LINQ to SQL (ডেটাবেস query)

LINQ to SQL হল LINQ এর একটি ফিচার, যা SQL ডেটাবেসে query করতে ব্যবহৃত হয়। আপনি LINQ ব্যবহার করে SQL ডেটাবেসের টেবিল, ভিউ বা স্টোরড প্রসিডিউর গুলি query করতে পারেন। LINQ to SQL কে ব্যবহার করার জন্য, DataContext ক্লাস এবং টেবিলের জন্য ক্লাস তৈরি করা প্রয়োজন।

উদাহরণ: LINQ to SQL

using System;
using System.Linq;
using System.Data.Linq;

public class Program
{
    static void Main()
    {
        DataContext db = new DataContext("your_connection_string_here");

        var students = from s in db.GetTable<Student>()
                       where s.Age > 20
                       select s;

        foreach (var student in students)
        {
            Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
        }
    }
}

public class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
}

এখানে:

  • DataContext ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করা হয়েছে।
  • GetTable<Student>() দ্বারা ডেটাবেসের Student টেবিলের সাথে যোগাযোগ করা হয়েছে।
  • LINQ ব্যবহার করে SQL ডেটাবেসে query করা হয়েছে।

৩. LINQ to Entities

LINQ to Entities হল Entity Framework এর সাথে LINQ ব্যবহার করার একটি পদ্ধতি, যেখানে ডেটাবেসের Entity গুলোর সাথে প্রশ্ন করা হয়।

উদাহরণ: LINQ to Entities

using System;
using System.Linq;
using System.Data.Entity;

public class Program
{
    static void Main()
    {
        var dbContext = new MyDbContext();

        var students = from s in dbContext.Students
                       where s.Age > 20
                       select s;

        foreach (var student in students)
        {
            Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
        }
    }
}

এখানে:

  • MyDbContext হলো আপনার Entity Framework এর DbContext ক্লাস।
  • dbContext.Students Entity গুলি query করার জন্য ব্যবহৃত হচ্ছে।

সারাংশ

  • LINQ to Objects ইন-মেমরি ডেটা (যেমন List, Array) query এবং manipulate করার জন্য ব্যবহৃত হয়।
  • LINQ to SQL এবং LINQ to Entities ডেটাবেসের সাথে সরাসরি যোগাযোগ করার জন্য ব্যবহৃত হয়।
  • LINQ ব্যবহার করে ডেটা খুব সহজে filter, sort, group এবং transform করা যায়।
  • LINQ ক্লাসিক SQL এর মতো প্রশ্ন করা হলেও, এটি C# কোডের মধ্যে টাইপ সেফ এবং আরও প্রোগ্রামেবল হয়।

LINQ একটি অত্যন্ত শক্তিশালী এবং দক্ষ টুল যা ডেটা query এবং manipulation প্রক্রিয়াকে খুবই সহজ এবং পরিষ্কার করে তোলে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...