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