我目前正在使用C#进行原型设计,因为这是它唯一有用的东西。 现在我正在学习linq并遇到了一个语法挑剔。
private List<string> svar1 = new List<string>();
private List<string> svar2 = new List<string>();
private List<string> svar3 = new List<string>();
private List<string> svar4 = new List<string>();
private List<string> svar5 = new List<string>();
... fill lists with data
要获得所有这些列表中最长的字符串长度,我会这样做:
List<List<string>> lists = new List<List<string>>{svar1, svar2, svar3, svar4, svar5};
int ma = lists.Max(lst => lst.Max(str => str.Length));
但似乎太长了。你不应该把它写得更短,也许更有效吗?
类似的东西:
int ma = {svar1, svar2, svar3, svar4, svar5}.Max(lst => lst.Max(str => str.Length));
我观看了有关此linq语法的视频,但很久以前我不记得语法了。稍后进行一些互联网搜索,我仍然无法找到一个好的答案。
更新:所有列表各有约870个项目。
答案 0 :(得分:2)
你非常接近;
int ma = new[] {svar1, svar2, svar3, svar4, svar5}
.Max(lst => lst.Max(str => str.Length));
应该有用。
答案 1 :(得分:1)
您可以使用Concat而不是创建新的List:
svar1.Concat(svar2).
Concat(svar3).
Concat(svar4).
Max(str => str.Length);
如果你有很多短名单,这个解决方案可能会稍快一些。