首页 新闻 会员 周边

如何使用Sort方法比较包含多个属性的对象数组

0
悬赏园豆:10 [已解决问题] 解决于 2019-01-08 08:53

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
List<User> users = new List<User>();
users.Add(new User() { UserId = 1, UserName = "1" });
users.Add(new User() { UserId = 2, UserName = "2" });
users.Add(new User() { UserId = 3, UserName = "3" });

        users.Sort();
        foreach (var u in users)
        {
            Console.Write(u.UserName);
        }
       
        Console.Read();
    }
}

public class User
{
    public int UserId { get; set; }
  
    public string UserName { get; set; }


}

}

上面这段代码,在users.Sort();会抛异常。
要使结果输出123,在不修改User类的情况下,代码要如何改动?
要使结果输出321,在只能改动User类的情况下,代码要如何改动?
请各位大神指教指教

辉笑的主页 辉笑 | 初学一级 | 园豆:102
提问于:2019-01-03 17:02
< >
分享
最佳答案
0

1.要使结果输出123,在不修改User类的情况下,代码要如何改动?

users.Sort((x, y) => x.UserId - y.UserId);

2.要使结果输出321,在只能改动User类的情况下,代码要如何改动?

users.Sort();
public class User: IComparable<User>
    {
        public int UserId { get; set; }

        public string UserName { get; set; }

        public int CompareTo(User other)
        {
            return other.UserId - UserId;
        }
    }
收获园豆:10
jello chen | 大侠五级 |园豆:7306 | 2019-01-03 23:31

大神厉害啊,谢谢啦。能给我解释一下输出321的那段代码的原理吗?

辉笑 | 园豆:102 (初学一级) | 2019-01-04 09:18
其他回答(1)
0

users.orderby(p=>p.usreid) //asc
users.orderbydesc(p=>p.usreid) //desc

czd890 | 园豆:14412 (专家六级) | 2019-01-04 17:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册