Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में Lambda Expressions के साथ Min() से न्यूनतम तत्व प्राप्त करना


C# में LINQ का Min() मेथड एक सेलेक्टर (lambda expression) स्वीकार कर सकता है जो प्रत्येक तत्व को प्रोजेक्ट करता है, फिर न्यूनतम मान लौटाता है। यह जटिल ऑब्जेक्ट्स या रूपांतरण के साथ न्यूनतम खोजने के लिए उपयोगी है।

उदाहरण

using System;
using System.Linq;

class Demo
{
    static void Main()
    {
        int[] arr = { 10, 15, 5, 20 };
        
        // निरपेक्ष मान (Absolute value) के आधार पर न्यूनतम
        // Math.Abs का उपयोग करके -5, 10, 15, 20 में से न्यूनतम 5 होगा
        int minAbs = arr.Min(element => Math.Abs(element));
        
        Console.WriteLine($"सरणी: [{string.Join(", ", arr)}]");
        Console.WriteLine($"निरपेक्ष मान के आधार पर न्यूनतम: {minAbs}");
        
        // सामान्य Min() तुलना के लिए
        Console.WriteLine($"सामान्य न्यूनतम: {arr.Min()}");
    }
}

आउटपुट

सरणी: [10, 15, 5, 20]
निरपेक्ष मान के आधार पर न्यूनतम: 5
सामान्य न्यूनतम: 5

Lambda Selector के साथ Min() के उन्नत उदाहरण

using System;
using System.Linq;

public class Demo
{
    public static void Main()
    {
        // 1. स्ट्रिंग लंबाई के आधार पर न्यूनतम
        string[] words = { "apple", "banana", "kiwi", "strawberry" };
        int minLength = words.Min(w => w.Length);
        Console.WriteLine($"न्यूनतम लंबाई: {minLength}"); // 4 (kiwi)
        
        // 2. कस्टम ऑब्जेक्ट से न्यूनतम गुण
        var students = new[]
        {
            new { Name = "अमित", Age = 22, Score = 85 },
            new { Name = "प्रिया", Age = 20, Score = 92 },
            new { Name = "राहुल", Age = 21, Score = 78 }
        };
        
        int minAge = students.Min(s => s.Age);
        int minScore = students.Min(s => s.Score);
        Console.WriteLine($"\न्यूनतम उम्र: {minAge}");    // 20
        Console.WriteLine($"न्यूनतम स्कोर: {minScore}");  // 78
        
        // 3. जटिल प्रोजेक्शन
        var products = new[]
        {
            new { Name = "Laptop", Price = 50000, Discount = 0.1 },
            new { Name = "Mouse", Price = 500, Discount = 0.05 },
            new { Name = "Monitor", Price = 15000, Discount = 0.15 }
        };
        
        // अंतिम मूल्य (छूट के बाद) के आधार पर न्यूनतम
        decimal minFinalPrice = products.Min(p => p.Price * (1 - p.Discount));
        Console.WriteLine($"\न्यूनतम अंतिम मूल्य: ₹{minFinalPrice}"); // 475 (Mouse)
        
        // 4. DateTime के साथ
        DateTime[] dates = { 
            DateTime.Now.AddDays(5),
            DateTime.Now.AddDays(-2),
            DateTime.Now.AddDays(10)
        };
        DateTime earliest = dates.Min();
        Console.WriteLine($"\nसबसे पहली तारीख: {earliest:d}");
    }
}

आउटपुट

न्यूनतम लंबाई: 4

न्यूनतम उम्र: 20
न्यूनतम स्कोर: 78

न्यूनतम अंतिम मूल्य: ₹475

सबसे पहली तारीख: 1/13/2024

Min() ओवरलोड्स

सिग्नेचरउपयोग
Min()तुलनीय तत्वों के लिए डिफॉल्ट तुलना
Min(selector)सेलेक्टर द्वारा प्रोजेक्टेड मान का न्यूनतम
Min(selector)जेनेरिक सेलेक्टर

MinBy() - .NET 6+ (न्यूनतम तत्व वाला पूरा ऑब्जेक्ट)

// .NET 6+ / C# 10+
var youngestStudent = students.MinBy(s => s.Age);
Console.WriteLine($"सबसे युवा: {youngestStudent.Name} (उम्र: {youngestStudent.Age})");

var cheapestProduct = products.MinBy(p => p.Price * (1 - p.Discount));
Console.WriteLine($"सबसे सस्ता (छूट के बाद): {cheapestProduct.Name}");

खाली अनुक्रम हैंडलिंग

using System;
using System.Linq;

public class Demo
{
    public static void Main()
    {
        int[] empty = Array.Empty();
        
        // Min() खाली सरणी पर अपवाद फेंकता है
        try
        {
            int min = empty.Min();
        }
        catch (InvalidOperationException ex)
        {
            Console.WriteLine($"Min() अपवाद: {ex.Message}");
        }
        
        // सुरक्षित विकल्प
        int? safeMin = empty.DefaultIfEmpty().Min(); // null लौटाता है
        Console.WriteLine($"DefaultIfEmpty().Min(): {safeMin}");
        
        // या MinOrDefault (कस्टम एक्सटेंशन)
        int minOrDefault = empty.MinOrDefault(); // 0 (डिफॉल्ट)
    }
}

महत्वपूर्ण बिंदु

  • Min(selector) सेलेक्टर द्वारा लौटाए गए मान का न्यूनतम ढूंढता है, मूल तत्व नहीं
  • सेलेक्टर किसी भी प्रकार (TResult) को लौटा सकता है जो IComparable लागू करता है
  • खाली अनुक्रम पर InvalidOperationException फेंकता है
  • DefaultIfEmpty() या MinBy() (नए संस्करण) से सुरक्षित हैंडलिंग
  • प्रदर्शन: O(n) एकल पास
  • लेजी मूल्यांकन - सेलेक्टर प्रत्येक तत्व के लिए एक बार कॉल होता है
  1. - C# प्रोग्राम सबसे अधिक बार आने वाले तत्व को ढूंढने के लिए

    मान लें कि हमारी स्ट्रिंग है: String s = HeathLedger!; अब एक नई सरणी बनाएं। int[] cal = new int[maxCHARS]; एक नई विधि बनाएं और इसमें उपरोक्त घोषित स्ट्रिंग और नई सरणी दोनों पास करें। किसी कैरेक्टर की अधिकतम घटना ढूंढें। static void calculate(String s, int[] cal) { for (int i = 0; i < s.Length;

  1. Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना Python प्रोग्राम से ऐरे में सबसे बड़ा तत्व खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक ऐरे दिया गया है, हमें ऐरे के सबसे बड़े तत्व की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का उपयोग करते हैं जिसमें हम पूरे लूप को पार करके और तत्व प्राप्त करके सबसे बड़ा तत्व निकालते हैं। हम नीच

  1. - पायथन प्रोग्राम: 2D ऐरे में k-वां सबसे छोटा एलिमेंट खोजना

    एक n×n यूजर इनपुट इंटीजर मैट्रिक्स दिया गया है और k का मान। हमारा कार्य 2D ऐरे में k-वां सबसे छोटा एलिमेंट ढूंढना है। यहां हम heapq मॉड्यूल का उपयोग करते हैं। पायथन में हीप क्यू (या heapq) उपलब्ध है। इस मॉड्यूल की तकनीक यह है कि हर बार हीप एलिमेंट का सबसे छोटा पॉप किया जाता है (मिन हीप)। nsmallest()