如何在lambda表达式中使用like运算符

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)

小智 5

你可能想试试这个!

list.exists(element => element.startswith("在列表中搜索的起始文本"))