如何在C#中对列表进行排序

15

我有一个类:

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

我有一个Myobject对象的列表:

Name Age
ABC 12
BBC 14
ABC 11

如何根据条件对列表进行排序:首先按照姓名排序,其次按照年龄排序。使用以下列表进行排序后的结果:
Name Age
ABC 11
ABC 12
BBC 14

我在这里有另一个问题:http://stackoverflow.com/questions/3279248/help-me-to-combine-sorting-filtering-on-a-list - Leo Vo
5个回答

14

使用LINQ有两种不同的方法:

1)使用OrderByThenBy

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();

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);
        }
    }
}

3

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

你可以传递一个新对象给 Order By,以便它按照该对象排序

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);
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接