【问题标题】:How to order the list of model by string length property如何按字符串长度属性对模型列表进行排序
【发布时间】:2015-02-10 08:30:49
【问题描述】:

我有一个类用户:

class User
{
    public string Name { get; set; }
    public Address Address { get; set; }
    public DateTime Birthday { get; set; }
}

然后我有一个像List<User> users 这样的用户列表。 我遇到了听起来“如何按名称长度字符串属性排序列表?

我尝试过这样的事情:

users.OrderBy(user=>user.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);

标签: c# string list lambda


【解决方案1】:

如果列表没有null 用户以及null 名称:

users.Sort((Comparison<User>) ((left, right) => 
  return left.Name.Length - right.Name.Length;
));

注意,代码对现有列表users进行排序,而OrderBy创建一个新集合

users = users
  .OrderBy(user => user.Name.Length)
  .ToList();

【讨论】:

  • 感谢您的回答。我想知道什么是更好的练习?使用 Sort 或 OrderBy 方法?对我来说,带有 lambda 的 OrderBy 结构更加清晰易读
  • @vindemi: Sort() 在这里是一个更好的解决方案,因为OrderBy 创建一个新集合,这意味着需要额外的资源(时间和内存)使用。
猜你喜欢
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 2018-02-23
  • 2013-12-11
  • 2019-01-18
  • 2011-11-26
相关资源
最近更新 更多