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 | जेनेरिक सेलेक्टर |
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) एकल पास
- लेजी मूल्यांकन - सेलेक्टर प्रत्येक तत्व के लिए एक बार कॉल होता है