[英]How to add “Find” function to IList
我正在從業務層返回 IList。 但是在視圖模型中我必須使用 Find 功能。 一種方法是將 IList 轉換為 List。
但是無論如何要向IList添加“查找”方法
嗯,有 Linq 擴展方法.Where
(用來處理所有匹配項)和.FirstOrDefault
(用來獲取第一個匹配項),或者您可以針對 IList 編寫自己的擴展方法,例如:
public static class IListExtensions
{
public static T FindFirst<T>(this IList<T> source, Func<T, bool> condition)
{
foreach(T item in source)
if(condition(item))
return item;
return default(T);
}
}
您可以使用 IndexOf 方法嗎?
您可以使用 Where 方法
list.Where(predicate).First()
很簡單, just you need
澆鑄步驟
var myModelasList= IListReturnedViewModel as List<ViewModelObject>;
//now you can use list feaures like Find Func.
myModelasList.Find((t => t.SomeFiald== currentState && t.IsSomting == somesymbol);
我編寫了一個擴展方法來為我進行轉換。
public static T Find<T>(this IList<T> ilist, Predicate<T> match)
{
if (ilist is List<T> list)
{
return list.Find(match);
}
else if (ilist is T[] array)
{
return Array.Find(array, match);
}
else
{
return ilist.FirstOrDefault(i => match(i));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.