【问题标题】:How to get max length record from List<String>? [duplicate]如何从 List<String> 获取最大长度记录? [复制]
【发布时间】:2015-10-19 15:29:44
【问题描述】:

我的列表包含字符串记录列表。我想获取所有记录中长度最大的记录。 如何从列表中获取最大长度记录?

【问题讨论】:

  • 直截了当的解决方案:迭代列表并将当前记录长度与先前找到的最大值进行比较。你试过了吗?
  • 另外,您是否尝试过将您的确切问题标题复制到谷歌?
  • list.Select(c =&gt; c.Length).Max() 什么的?
  • 如果有多个长度相同怎么办?

标签: c# list


【解决方案1】:

这可能对你有用

List<string> strings = new List<string>();
strings.Add("001");
strings.Add("00121");
strings.Add("001123123");
strings.Add("00144");


string longest = strings.OrderByDescending(s => s.Length).First();

【讨论】:

    【解决方案2】:

    如果要查找所有最长的字符串:

    IEnumerable<string> longestStrings = list
        .GroupBy(str => str == null ? 0 : str.Length)
        .OrderByDescending(g => g.Key) // order by length
        .First();
    

    另一种在内存消耗方面可能更便宜的方法:

    int maxLength = list.Max(str=> str == null ? 0 : str.Length); 
    longestStrings = list
        .Where(str => (str == null ? 0 : str.Length) == maxLength);
    

    【讨论】:

    • 如果输入是一个双枚举便宜的列表,我宁愿使用两遍方法。首先是Max,然后是Where(len==max)
    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多