public List<String> listStr = new listStr();
public List<String> FindString(Expression<Func<String, bool>> predicate)
{
// return a list that satisfies the predicate
}
我想要做一个例子来理解如何在c#中使用表达式。你能帮我完成这个代码吗?评估一个列表中的所有元素的表达式
public List<String> listStr = new listStr();
public List<String> FindString(Expression<Func<String, bool>> predicate)
{
// return a list that satisfies the predicate
}
我想要做一个例子来理解如何在c#中使用表达式。你能帮我完成这个代码吗?评估一个列表中的所有元素的表达式
像这样的东西?
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();
}
public List<String> FindString(Expression<Func<String, bool>> predicate)
{
return listStr.Where(predicate.Compile()).ToList();
}
您需要编译一个表达式才能像使用它一样发布 – 2011-12-20 15:12:43
@SebastianPiu谢谢,错过了,更新了。 – Magnus 2011-12-20 15:20:35
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();
}
PS:你的变量声明是错误的。
[Expression类的文档](http://msdn.microsoft.com/en-us/library/system.linq.expressions.expression.aspx)在底部有一个示例:'var result = Expression.Lambda>(blockExpr).Compile()();' –
2011-12-20 15:07:20