您好,关于使用 lambda 表达式的类似条件的问题。
希望你能尽快回复这篇文章(有点紧急)
我的问题是如何做类似的查询,我知道我可以使用startswith、contains等或sqlmethods等。但如何在 lambda 表达式中使用它们。
例如: Person 实体包含 name ,在下面的示例中,我搜索 person.name ='john'。
但是用户可以在运行时选择任何运算符进行比较(例如,等于,以 开头,以 结尾等) 例如。它可以是 person.name ='john' 或 person.name like 'j%' 或 person.name like '%j' 或 person.name contains '%jo%'
如何构建动态查询。您可以修改上面的代码并告诉我吗?由于我对 linq 还很陌生,所以我不太了解 lambda。
感谢您的帮助。
源代码 -
DataContext context = new DataContext // linq to sql data context.
Query<Person> q = new Query<Person>(context);
Expression<Func<Manufacturer, bool>> expn = DynamicExpression.ParseLambda<Manufacturer, bool>(condition, value); //condition is "name=@0", value = string[] i.e - "john"
q.Where = expn;
return q.SingleOrDefault<Person>();
例如 expn 是 name =@0 ,但我想像 '%@0%' 这样的名称如何?
查询类如下
public Expression<Func<T, bool>> Where
{
set { m_where = value; }
}
最佳答案
你可能想尝试一下这个!
list.exists(element => element.startswith("在列表中搜索的起始文本"))
关于linq - 如何在 lambda 表达式中使用 like 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4721105/