按年龄排序c#中的列表类

时间:2014-11-19 13:45:26

标签: c# linq list class sorting

我是初学者,我想创建一个打印的实现 控制台的所有用户信息,按年龄排序。我试过使用Linq但没有成功。 这是代码库:

class User
{
    public String name;
    public String surname;
    public int age;
}

interface UsersConsumer { public void consume(List<Users> collection); }

这是我尝试在界面中做的事情:

List<User> SortedUserList = 
    collection.OrderByDescending(collection => collection.age).ToList();

2 个答案:

答案 0 :(得分:4)

您需要在lambda表达式中使用不同的变量名称,如:

List<User> SortedUserList = collection.OrderByDescending(row => row.age).ToList();

否则您最终会收到如下错误:

  

一个名为&#39; collection&#39;的局部变量不能在此范围内声明   因为它会给“集合”带来不同的含义,即   已经在父母或当前使用过的&#39;范围来表示别的东西

编辑:注意到一件事:

  

这是我尝试在界面中做的事情:

您无法在界面中实施。接口更像是契约,你必须在类中实现你的接口然后把实现放在:

public class SomeClass : UsersConsumer 
{
    public void consume(List<User> collection)
    {
        List<User> SortedUserList = collection.OrderByDescending(row => row.age).ToList();
    }
}   

确保您遵循.Net naming conventions

答案 1 :(得分:0)

你无法排序,因为程序不知道如何排序。只要写上 class User : IComparable<User>
现在程序知道用户可以与另一个用户进行比较。现在写下:

public int CompareTo(User u) { return age.CompareTo(u.age); }

现在程序知道,您可以按年龄对用户进行排序。所以你可以对它们进行排序collection.Sort()并写下来: - )