2010-07-19 18 views
13

मैं एक वर्ग है:सी # में एक सूची सॉर्ट करने के लिए कैसे

Name Age 
ABC 12 
BBC 14 
ABC 11 

शर्त के साथ इस सूची में कैसे सॉर्ट करने के लिए: प्रकार पहले & तरह नाम

public class MyObject 
{ 
public string Name; 
public int Age; 
} 

मैं myObject वस्तुओं की एक सूची है बाद में आयु इस सूची के साथ, छँटाई के बाद परिणाम:

Name Age 
ABC 11 
ABC 12 
BBC 14 
+0

मैं यहाँ पर एक और सवाल है के द्वारा आदेश: http://stackoverflow.com/questions/3279248/help-me-to-combine-sorting-filtering-on-a-list –

उत्तर

10
class Program 
{ 
    static void Main(string[] args) 
    { 
     var list = new List<MyObject>(new[] 
     { 
      new MyObject { Name = "ABC", Age = 12 }, 
      new MyObject { Name = "BBC", Age = 14 }, 
      new MyObject { Name = "ABC", Age = 11 }, 
     }); 
     var sortedList = from element in list 
         orderby element.Name 
         orderby element.Age 
         select element; 

     foreach (var item in sortedList) 
     { 
      Console.WriteLine("{0} {1}", item.Name, item.Age); 
     } 
    } 
} 
14

दो अलग अलग तरीकों का उपयोग कर LINQ:

1) OrderBy और ThenBy का उपयोग करना:

:

l = l.OrderBy(x => x.Name).ThenBy(x => x.Age).ToList(); 

2) क्वेरी सिंटैक्स का उपयोग करना

l = (from x in l 
    orderby x.Name, x.Age 
    select x).ToList(); 
3

System.Linq का उपयोग करके आप इसे आसानी से प्राप्त कर सकते हैं:

list = list.OrderBy(e=>e.Name).ThenBy(e=>e.Age); 

यह भी उत्तर दें: Sorting a list using Lambda/Linq to objects

1

आप क्या कर सकते हैं निम्नलिखित LINQ का उपयोग कर:

class Program 
{ 
    static void Main(string[] args) 
    { 
     List<MyObject> list = new List<MyObject>(); 

     list.Add(new MyObject() { Age = 12, Name = "ABC" }); 
     list.Add(new MyObject() { Age = 11, Name = "ABC" }); 
     list.Add(new MyObject() { Age = 14, Name = "BBC" }); 

     var sorted = list.OrderBy(mo => mo.Name).ThenBy(mo => mo.Age); 

     foreach (var myObject in sorted) 
     { 
      Console.WriteLine(string.Format("{0} - {1}", 
           myObject.Name, myObject.Age)); 
     } 
    } 
} 
0

तुम बहुत से आदेश के लिए एक नई वस्तु पारित कर सकते हैं कि यह है कि

class Program 
{ 
    static void Main(string[] args) 
    { 
     var list = new List<MyObject>(new[] 
     { 
      new MyObject { Name = "ABC", Age = 12 }, 
      new MyObject { Name = "BBC", Age = 14 }, 
      new MyObject { Name = "ABC", Age = 11 }, 
     }); 
     var sortedList = list.OrderBy(x => new { x.Name , x.Age }); 

     foreach (var item in sortedList) 
     { 
      Console.WriteLine("{0} {1}", item.Name, item.Age); 
     } 
    } 
} 
संबंधित मुद्दे