2010-11-14 11 views
6

का उपयोग कर अधिकतम गणना के साथ वापसी सूची सी # और लिंक का उपयोग करके मैं सूची < ....> सबसे बड़ा आकार/गिनती के साथ कैसे वापस करूँगा?लिंक

+2

उहम, क्या गिनती है? क्या आप आगे बता सकते हैं, उदा। इनपुट और आउटपुट के उदाहरण के साथ। –

उत्तर

6

यह लगता के रूप में यदि आप n सूचियाँ है, और आप सबसे बड़ा गिनती के साथ एक खास तौर करना चाहते हैं।

इस प्रयास करें:

List<int> ints1 = new List<int> { 10, 20, 30 }; 
List<int> ints2 = new List<int> { 1, 2, 3, 4 }; 
List<int> ints3 = new List<int> { 100, 200 }; 

var listWithMost = (new List<List<int>> { ints1, ints2, ints3 }) 
        .OrderByDescending(x => x.Count()) 
        .Take(1); 

अब आप तत्वों की सबसे अधिक संख्या के साथ सूची की है। उस परिदृश्य पर विचार करें जहां तत्वों की एक ही शीर्ष संख्या के साथ 2+ सूचियां हैं।

+0

बहुत बहुत धन्यवाद !! काफी व्यापक समाधान :) –

+3

'.Take (1) 'की तुलना में 'सबसे पहले()' का उपयोग करना बेहतर है, क्योंकि तब आपको सूची में एक तत्व के साथ सूची की बजाय सूची वापस मिल जाएगी। – recursive

1
int[] numbers = new int[] { 1, 54, 3, 4, 8, 7, 6 }; 
var largest = numbers.OrderByDescending(i => i).Take(4).ToList(); 
foreach (var i in largest) 
{ 
    Console.WriteLine(i); 
} 

एक समारोह को परिभाषित "सबसे बड़े आकार/गिनती" के साथ i => i बदलें।

11

मुझे लगता है कि आपके पास lists नामक सूचियों का संग्रह है और आप इस संग्रह में सूची को वापस करना चाहते हैं जिसमें सबसे अधिक तत्व हैं। यदि हां, तो इस कोशिश:

var listWithLargestCount = lists.OrderByDescending(list => list.Count()).First(); 

वैकल्पिक रूप से अगर यह वस्तुओं के लिए LINQ है और आप एक बहुत सूचियों आप इस कोशिश करने के लिए हे परहेज करके बेहतर प्रदर्शन प्राप्त करने के लिए (एन लॉग इन करें n) तरह चाहते हो सकता है की:

int maxCount = lists.Max(list => list.Count()); 
var listWithLargestCount = lists.First(list => list.Count() == maxCount); 
+0

धन्यवाद मार्क! मुझे आपका समाधान पसंद है। सॉर्ट टाइम में फैक्टरिंग के लिए धन्यवाद :) यह बहुत उपयोगी होगा ... –