Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何按字符串长度属性对模型列表排序_C#_String_List_Lambda - Fatal编程技术网

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();