C# में Dictionary को Values के अनुसार Sort करना
C# में Dictionary<TKey, TValue> को सीधे सॉर्ट नहीं किया जा सकता क्योंकि यह अनऑर्डर्ड कलेक्शन है। लेकिन LINQ के OrderBy मेथड का उपयोग करके हम इसके Key-Value पेअर्स को मानों के आधार पर क्रमबद्ध कर सकते हैं।
उदाहरण: Dictionary बनाना और डेटा जोड़ना
var d = new Dictionary<string, int>(5);
अब की-वैल्यू पेअर्स जोड़ते हैं:
d.Add("car", 25);
d.Add("bus", 28);
d.Add("motorbike", 17);
LINQ OrderBy से Ascending Order में Sort करना
var val = from ele in d orderby ele.Value ascending select ele;
यहां ascending आरोही क्रम के लिए है। आप descending का उपयोग अवरोही क्रम के लिए कर सकते हैं।
क्रमबद्ध परिणाम प्रदर्शित करना
foreach (KeyValuePair<string, int> ele in val) {
Console.WriteLine("{0} = {1}", ele.Key, ele.Value);
}
पूर्ण कोड उदाहरण
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
static void Main() {
var d = new Dictionary<string, int>(5);
d.Add("car", 25);
d.Add("bus", 28);
d.Add("motorbike", 17);
var sorted = from ele in d orderby ele.Value ascending select ele;
Console.WriteLine("मानों के अनुसार आरोही क्रम:");
foreach (var ele in sorted) {
Console.WriteLine($"{ele.Key} = {ele.Value}");
}
}
}
आउटपुट
motorbike = 17 car = 25 bus = 28
नोट: LINQ क्वेरी एक IOrderedEnumerable<KeyValuePair<TKey,TValue>> लौटाती है, मूल Dictionary को modify नहीं करती।