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

时间:2011-01-18 06:27:01

标签: linq linq-to-sql linq-to-entities

使用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>();

例如,expn是name = @ 0,但我想做'%@ 0%'这样的名字怎么样?

查询类如下

public Expression<Func<T, bool>> Where
{
    set { m_where = value; }
}

2 个答案:

答案 0 :(得分:5)

你可能想试试这个!

list.exists(element =&gt; element.startswith(“在列表中搜索的起始文本”))

答案 1 :(得分:-1)

在Linq2SQL中,您可以使用SqlMethods.Like

相关问题