Как добавить функцию «Найти» в IList - PullRequest
4 голосов
/ 14 ноября 2010

Я возвращаю IList из бизнес-уровня.Но во viewmodel я должен использовать функцию Find.Одним из методов является преобразование IList в List.

Но есть ли способ добавить метод "Find" в IList

Ответы [ 4 ]

7 голосов
/ 14 ноября 2010

Ну, есть методы расширения 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);
    }
}
2 голосов
/ 14 ноября 2010

Вы можете использовать метод Где

list.Where(predicate).First()
2 голосов
/ 14 ноября 2010

Можете ли вы использовать метод IndexOf?

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

0 голосов
/ 15 ноября 2015

очень просто, 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);
...