簡體   English   中英

如何使用 LINQ 有條件地創建新的字符串數組?

[英]How to create new string array conditionally with LINQ?

我有一個字符串數組,如下所示:

string[] myStrings = new string[] {"P1111111F","N1111110","Z2","P1111111F","Z1111110"};

如何使用 LINQ 檢查每個字符串的長度 = 8 並以“0”結尾以獲得以下信息:

result: {"N","Y","N","N","Y"};

myStrings 使用重復字符串可能會更長,所以我想實現一個不重新處理已經考慮過的字符串的解決方案。

直截了當的方法:

string[] results = myStrings
    .Select(s => s?.Length == 8 && s.EndsWith("0") ? "Y" : "N")
    .ToArray();

避免ToArray算法加倍的微優化方式:

string[] results = new string[myStrings.Length];
for(int i = 0; i < myStrings.Length; i++)
{
    string s = myStrings[i];
    results[i] = s?.Length == 8 && s.EndsWith("0") ? "Y" : "N"; 
}

myStrings使用重復字符串可能會更長,所以我想實現一個不重新處理已經考慮過的字符串的解決方案。

我不認為將這些結果緩存在Dictionary<string, string>中會有所幫助。 檢查是否如此簡單和快速,以至於任何查找都會降低效率。 你只會浪費 memory。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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