簡體   English   中英

在多個列表中找到最長字符串長度的更好方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM