我有一个长度可变的字符串数组。目前,我有一个循环,它遍历数组以查找数组中最长的字符串。有没有什么办法可以让我用LINQ写得更高效和/或更整洁呢?
发布于 2011-06-30 01:00:18
它不会更有效率,但是做一些类似这样的事情会更干净一些:
var strings = new string[] { "1", "02", "003", "0004", "00005" };
string longest = strings.OrderByDescending( s => s.Length ).First();
输出: 00005
发布于 2014-08-14 05:56:10
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年后):空值合并比三元空值检查更好。
发布于 2011-06-30 00:58:30
string [] strings;
return strings.OrderByDescending (s => s.Length).First ();
https://stackoverflow.com/questions/6524407
复制相似问题