簡體   English   中英

如何將“查找”功能添加到 IList

[英]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 方法嗎?

http://msdn.microsoft.com/en-us/library/3w0148af.aspx

您可以使用 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.

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