评估列表中所有元素的表达式

时间:2011-12-20 15:03:42

标签: c# expression interaction

public List<String> listStr = new listStr();

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

我试图通过一个例子来了解如何在c#中使用Expression。你能帮我完成这段代码吗?

3 个答案:

答案 0 :(得分:4)

这样的东西?

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

为什么要使用表达式?,如果你想使用它,那么你需要先编译它,但除非你想在你的方法中对表达式进行一些操作,我建议使用上面的(或者直接使用) linq的.Where()扩展方法)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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。:您的变量声明是错误的。