use*_*566 2 linq linq-to-entities linq-to-sql
关于使用lambda表达式的类似条件的问题.
我希望你能尽快回复这篇文章(它很紧急)
我的问题是如何做查询,我明白我可以使用startswith,包含etc或sqlmethods之类的.但是如何在lambda表达式中使用它们.
例如:Person实体包含名称,在下面的示例中,我搜索person.name ='john'.
但是用户可以在运行时选择任何运算符进行比较(例如,等于,开始,结束等).它可能是person.name ='john'或person.name喜欢'j%'或person.name喜欢'%j'或person.name包含'%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>();
Run Code Online (Sandbox Code Playgroud)
例如,expn是name = @ 0,但是我想做'%@ 0%'这样的名字怎么样?
查询类如下
public Expression<Func<T, bool>> Where
{
set { m_where = value; }
}
Run Code Online (Sandbox Code Playgroud)