оценить выражение на всех элементах списка - PullRequest
0 голосов
/ 20 декабря 2011
public List<String> listStr = new listStr();

public List<String> FindString(Expression<Func<String, bool>> predicate)
{
// return a list that satisfies the predicate
}

Я пытаюсь сделать пример, чтобы понять, как использовать выражение в c #.Можете ли вы помочь мне завершить этот код?

Ответы [ 3 ]

4 голосов
/ 20 декабря 2011

Как то так?

public List<String> FindString(List<String> list, Func<String, bool> predicate)
{
    return list.Where(predicate).ToList();
}

Почему вы используете выражение ?, если вы хотите использовать его, вам нужно скомпилировать его раньше, но если вы не хотите делать некоторые манипуляции с выражением в вашем методе, я бы посоветовал использовать вышеизложенное (или напрямую использовать .Where() метод расширения linq)

public List<String> FindString(List<String> list, Expression<Func<String, bool>> predicate)
{
    var lambda = predicate.Compile();
    return list.Where(lambda).ToList();
}
1 голос
/ 20 декабря 2011
public List<String> FindString(Expression<Func<String, bool>> predicate)
{
  return listStr.Where(predicate.Compile()).ToList();
}
0 голосов
/ 20 декабря 2011
public List<String> listStr = new List<String>();

public List<String> FindString(Expression<Func<String, bool>> predicate)
{
    // return a list that satisfies the predicate
    Func<string, bool> p = predicate.Compile();
    return listStr.Where(p).ToList();
}

P.S .: Ваше объявление переменной неверно.

...