c# - linq order by a property which is an array? -
इस कोड वाले
स्थिर शून्य मुख्य (स्ट्रिंग [] args) {var test = नई सूची & lt; ट्यूपल & lt; स्ट्रिंग, int [] & gt; & gt; (); Test.Add (नया ट्यूपल & lt; स्ट्रिंग, int [] & gt; ("ए", नया इंट [] (1, 4, 7, 8})); // आइटम 1 परीक्षा। जोड़ें (नया ट्यूपल & lt; स्ट्रिंग, int [] & gt; ("ए", नया इंट [] {1, 2, 6, 5})); // आइटम 2 परीक्षा। जोड़ें (नया ट्यूपल & lt; स्ट्रिंग, int [] & gt; ("बी", नया इंट [] {1, 4, 7, 7})); // आइटम 3 test.Add (नया ट्यूपल & lt; स्ट्रिंग, int [] & gt; ("बी", नया इंट [] {1, 2, 3, 4})); // आइटम 4 परीक्षण। जोड़ें (नया ट्यूपल & lt; स्ट्रिंग, int [] & gt; ("एक", नया इंट [] (1, 1, 4, 9})); // आइटम 5 var परिणाम = test.OrderBy (x = & gt; x.Item1)। तब (x = & gt; x.Item2.OrderBy (y = & gt; y)); } वापस कम से कम एक ऑब्जेक्ट को आईसीओएमपरबल लागू करना होगा।
वाकई निश्चित नहीं है कि लिनक्स कैसे लिखूं, तो मुझे यह परिणाम मिलेगा <
एक कस्टम IComparer & lt; int []> है जो आप यहां चाहते हैं । यहां बताया गया है कि मैं इसे कैसे लिखूंगा। यह अलग-अलग मानों को देखेगा जब तक कि इसमें अंतर न हो। अगर किसी भी सरणी के अंत तक पहुंचने से पहले कोई अंतर नहीं पाया जाता है, तो यह सरणी की लंबाई के आधार पर देता है, जो मीट्रिक के साथ छोटी सरणी छोटी होती है।
सार्वजनिक वर्ग ArrayComparer: IComparer & lt; int [] & gt; {सार्वजनिक पूर्णांक तुलना (int [] x, int [] y) {for (int i = 0; i & lt; x.length & amp; i & lt; y.Length; i ++) {if (x [i]! = Y [i]) वापसी x [i] - y [i]; } वापसी x.लेैन्थ - y। लैंगलाइन; }} तुलना के लिए घटाव का उपयोग करना अच्छी तरह से काम करता है कि कैसे IComparer के रिटर्न मान निर्दिष्ट हैं।
इसका उपयोग करने के लिए आप बस लिखो
var परिणाम = परीक्षा। ऑर्डरबी (x = & gt; x.Item1)। तब (x = & gt; x.Item2.OrderBy (y = & gt; y)। ToArray (), नया ऐरे कॉम्पैपरर ());
Comments
Post a Comment