[英]Better way of finding longest string length in multiple lists
我目前正在使用 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 個項目。
你很親近;
int ma = new[] {svar1, svar2, svar3, svar4, svar5}
.Max(lst => lst.Max(str => str.Length));
應該管用。
您可以使用 Concat 而不是創建新列表:
svar1.Concat(svar2).
Concat(svar3).
Concat(svar4).
Max(str => str.Length);
如果您有許多短列表,此解決方案可能會稍微快一些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.