vrr*_*hod 19 c# linq-to-objects
我有一个可变长度的字符串数组.目前我有一个循环遍历数组以找到数组中最长的字符串.有没有什么方法可以使用LINQ以更高效和/或更清晰的方式编写它?
Bra*_*etz 43
它不会更有效率,但是做一些像以下事情会更清洁:
var strings = new string[] { "1", "02", "003", "0004", "00005" };
string longest = strings.OrderByDescending( s => s.Length ).First();
Run Code Online (Sandbox Code Playgroud)
输出:00005
Cal*_*olt 13
strings.Aggregate(string.Empty, (seed, f) => f.Length > seed.Length ? f : seed);
Run Code Online (Sandbox Code Playgroud)
聚合语法比其他方法稍微难以阅读,但严格来说,它比我在这里看到的其他方法更有效,因为它不需要排序.只是一个O(N)实现.
编辑:此方法与此处的大多数其他方法一起假设列表中没有空值,以免f.Length抛出空引用异常.一个快速的三元运算符(f!= null?f.Length:0)将修复它,如果它对你的可枚举有效.
string [] strings;
return strings.OrderByDescending (s => s.Length).First ();
Run Code Online (Sandbox Code Playgroud)