我有一個串列public static List<string> HandledErrorCodes { get; } = new List<string> {...,里面有一些資料。我需要檢查一個值(ex.ErrorCode)是否在這個串列中。我認為最好的方法是使用 Linq:
if ((exception is DomainException ex
&& CommandTriggerCommon.HandledErrorCodes.Any(ex.ErrorCode))
但我收到一個錯誤“引數 2:無法從 'string' 轉換為 'System.Func<string, bool>'”。最好的方法是什么?
uj5u.com熱心網友回復:
使用List.Contains()來查找元素是否存在,而不是Any:
if ((exception is DomainException ex
&& CommandTriggerCommon.HandledErrorCodes.Contains(ex.ErrorCode))
如果您堅持使用 LINQ(為什么?),您需要將條件指定為 Func<T,bool>
if ((exception is DomainException ex
&& CommandTriggerCommon.HandledErrorCodes.Any(e=>e==ex.ErrorCode))
這兩種方法都將遍歷整個串列以查找匹配項。如果您有超過幾十個錯誤代碼,您可以使用HashSet而不是List<string>. HashSet.Contains隨著專案數量的增加,將比線性搜索快得多。
uj5u.com熱心網友回復:
Any需要Func<T,bool>(或在您的特定情況下Func<string,bool>)-您只是傳遞了一個string
它應該是 ... && CommandTriggerCommon.HandledErrorCodes.Any(ec => ec == ex.ErrorCode)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/414428.html
標籤:
上一篇:LinqJoin查詢回傳空資料集
