首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用LINQ查找string[]中的最长字符串

如何使用LINQ查找string[]中的最长字符串
EN

Stack Overflow用户
提问于 2011-06-30 00:55:56
回答 6查看 33.8K关注 0票数 27

我有一个长度可变的字符串数组。目前,我有一个循环,它遍历数组以查找数组中最长的字符串。有没有什么办法可以让我用LINQ写得更高效和/或更整洁呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-30 01:00:18

它不会更有效率,但是做一些类似这样的事情会更干净一些:

代码语言:javascript
复制
var strings = new string[] { "1", "02", "003", "0004", "00005" };

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

输出: 00005

票数 55
EN

Stack Overflow用户

发布于 2014-08-14 05:56:10

代码语言:javascript
复制
strings.Aggregate(string.Empty, (seed, f) => f?.Length ?? 0 > seed.Length ? f : seed);

聚合语法比其他方法稍难阅读,但严格地说,它比我在这里看到的其他方法更有效,因为它不需要排序。只是一个O(N)实现。

编辑:这种方法以及这里的大多数其他方法都假定列表中没有空值,以免f.Length抛出null引用异常。一个快速的三元运算符(f != null?f.Length : 0)将修复此问题,如果它对您的可枚举值有效。

编辑(2.5年后):空值合并比三元空值检查更好。

票数 16
EN

Stack Overflow用户

发布于 2011-06-30 00:58:30

代码语言:javascript
复制
string [] strings;
return strings.OrderByDescending (s => s.Length).First ();
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6524407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档