C# 如何按字符串长度属性对模型列表排序
我有一个类用户:C# 如何按字符串长度属性对模型列表排序,c#,string,list,lambda,C#,String,List,Lambda,我有一个类用户: class User { public string Name { get; set; } public Address Address { get; set; } public DateTime Birthday { get; set; } } 然后我有一个用户列表,比如list users。 我遇到了一个问题,听起来是“如何按名称长度字符串属性对列表排序?” 我试过这样的方法: users.OrderBy(user=>user.Name.Le
class User
{
public string Name { get; set; }
public Address Address { get; set; }
public DateTime Birthday { get; set; }
}
然后我有一个用户列表,比如list users
。
我遇到了一个问题,听起来是“如何按名称长度字符串属性对列表排序?”
我试过这样的方法:
users.OrderBy(user=>user.Name.Length);
不幸的是,它没有起作用
感谢您的回复和问候。前提是列表中没有null
用户和null
名称:
users.Sort((Comparison<User>) ((left, right) =>
return left.Name.Length - right.Name.Length;
));
它应该是有效的。结果是什么?可能是愚蠢的问题,但您是否尝试将结果分配回集合?users=users.OrderBy(user=>user.Name.Length);可能是重复的@LDJ是正确的,但也将结果转换为列表。
users=users.OrderBy(user=>user.Name.Length)。ToList();
我想你必须这样做:users=users.toList().OrderBy(user=>user.Name.Length);谢谢你的回答。我想知道更好的做法是什么?使用Sort还是OrderBy方法?对我来说,使用lambda的OrderBy构造更清晰、更准确readble@vindemi:Sort()
在这里是一个更好的解决方案,因为OrderBy
创建了一个新的集合,这意味着使用。
users = users
.OrderBy(user => user.Name.Length)
.ToList();