কম্পিউটার টিউটোরিয়াল

LINQ C#-তে Last() এবং LastOrDefault()-এর পার্থক্য কী?

`Last()` এবং `LastOrDefault()` দুটোই একটি ভ্যালুর লাস্ট অকারেন্স ফেচ করে। কিন্তু `Last()` এবং `LastOrDefault()`-এর মেজর পার্থক্য হলো `Last()` এক্সসেপশন থ্রো করবে যদি সাপ্লাইড ক্রাইটেরিয়ার জন্য কোনো রেজাল্ট ডেটা না থাকে, অন্যদিকে `LastOrDefault()` ডিফল্ট ভ্যালু (null) রিটার্ন করবে যদি কোনো রেজাল্ট ডেটা না থাকে।

  • সিকোয়েন্সে কমপক্ষে একটি এলিমেন্ট থাকবে জানলে Last() ব্যবহার করুন।
  • ডেটা নিয়ে নিশ্চিত নন হলে LastOrDefault() ব্যবহার করুন।

উদাহরণ

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

namespace ConsoleApp
{
    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    class Program
    {
        static void Main()
        {
            var studentsList = new List
            {
                new Student { Id = 1, Name = "John" },
                new Student { Id = 2, Name = "Jack" },
                new Student { Id = 1, Name = "Jill" }
            };

            var lastOrDefaultStudent = studentsList.LastOrDefault(student => student.Id == 1);
            var lastStudent = studentsList.Last(student => student.Id == 1);

            Console.WriteLine($"LastOrDefault: {lastOrDefaultStudent.Id} {lastOrDefaultStudent.Name}");
            Console.WriteLine($"Last: {lastStudent.Id} {lastStudent.Name}");
            Console.ReadLine();
        }
    }
}

আউটপুট

LastOrDefault: 1 Jill
Last: 1 Jill

উদাহরণ (ম্যাচ না হলে)

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

namespace DemoApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                var studentsList = new List
                {
                    new Student { Id = 1, Name = "John" },
                    new Student { Id = 2, Name = "Jack" }
                };

                var lastOrDefaultStudent = studentsList.LastOrDefault(student => student.Id == 3);
                var value = lastOrDefaultStudent == null ? "null" : "";
                Console.WriteLine($"LastOrDefault: {value}");

                var lastStudent = studentsList.Last(student => student.Id == 3);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Last Exception: {ex.Message}");
                Console.ReadLine();
            }
        }
    }

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

আউটপুট

LastOrDefault: null
Last Exception: Sequence contains no matching element

এখানে Id "3" `studentsList`-এ নেই। তাই `LastOrDefault()` null ভ্যালু রিটার্ন করছে, অন্যদিকে `Last()` এক্সসেপশন থ্রো করছে।

  1. DirectX 11 এবং DirectX 12-এর পার্থক্য কী?

  2. C#-এ লিটারেল (Literal) এবং কনস্ট্যান্ট (Constant) এর পার্থক্য

  3. C#-এ String (ক্লাস) এবং string (এলিয়াস) এর পার্থক্য

  4. C#-এ লিস্ট এবং অ্যারেতে পার্থক্য (List vs Array)