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

本文关键字:列表 排序 | 更新日期: 2023-09-27 18:30:57

我是初学者,我想创建一个打印的实现控制台的所有用户信息,按年龄排序。我尝试使用 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();

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

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

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

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

不能在此作用域中声明名为"集合"的局部变量 因为它会给"收藏"赋予不同的含义,即 已在"父级或当前"范围内用于表示其他内容

编辑:刚刚注意到一件事:

这是我试图在界面中执行的操作:

你不能在你的界面中有实现。接口更像是一个契约,你必须在一个类中实现你的接口,然后把实现放进去:

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

请确保遵循 .Net 命名约定。

您无法排序,因为程序不知道如何对其进行排序。只是写

class User : IComparable<User>现在程序知道该用户可以与另一个用户进行比较。现在写如何:



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

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