【问题标题】:how to use like operator in lambda expression如何在 lambda 表达式中使用 like 运算符
【发布时间】:2011-04-20 04:37:11
【问题描述】:

关于使用 lambda 表达式的类似条件的问题。

希望你能尽快回复这个帖子(有点急)

我的问题是如何做类似的查询,我知道我可以使用startswith、contains etc或sqlmethods like。但是如何在 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; }
}

【问题讨论】:

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


    【解决方案1】:

    你可能想试试这个!

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

    【讨论】:

      【解决方案2】:

      在Linq2SQL中,可以使用SqlMethods.Like

      【讨论】:

      • 但是如何表达 DataContext context = new DataContext // linq to sql 数据上下文。查询 q = 新查询(上下文);表达式> expn = DynamicExpression.ParseLambda(condition, value); //条件是"name=@0", value = string[] 即 - "john" q.Where = expn; return q.SingleOrDefault();
      猜你喜欢
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 2014-11-13
      • 2022-01-21
      • 2016-06-14
      相关资源
      最近更新 更多