Где предикат и выражение <Func <T, bool >> - PullRequest
1 голос
/ 23 февраля 2011

У меня есть эта строка кода, которая возвращает индекс определенного объекта в IList<T>

int index = list.IndexOf(list.Where(x => x.Code == searchValue).FirstOrDefault());

и у меня есть похожая конструкция во многих местах, которая ищет коллекции по разным свойствам. Моя цель - автоматизировать это, чтобы у меня был общий метод MyClass<T>

int index = myClass.Find<T>(x=> x.Code == searchValue);

или

int index = MyClass.Find<T>(x => x.Name.ToUpper().StartsWith(searchValue.ToUpper()));

Возможно ли это с помощью лямбда-выражений?

Edit:

Для тех, кто спрашивает то же самое, вот код, который работает:

public int Find(Func<T, bool> whereClause)
{
    return _list.IndexOf(_list.Where<T>(whereClause).FirstOrDefault<T>());
}

1 Ответ

2 голосов
/ 23 февраля 2011

Я не уверен, почему вы думаете, что вам нужно использовать дерево выражений.Предполагая, что list является List<T>, вы должны иметь возможность использовать FindIndex:

int index = list.FindIndex(x => x.Code == searchValue);

Если это не , что вам нужно, пожалуйста, дайтенам больше информации о том, какие типы используются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...