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

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

您好,关于使用 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/

相关文章:

c# - 在linq中对列表进行排序

c# - linq查询c#中的内部选择查询

c# - 使用 Join、LINQ 然后 Split 从存储过程中获取 n 个绑定(bind)数据。使用多个结果,Linq2SQL

c# - LINQ 并检查 !=null

c# - 反序列化包含数组的 JSON 数组?

linq-to-entities - IQueryable Lambda 投影语法

c# - 通过GroupBy求Max值抛出Sequence不包含元素异常

c# - Linq 包含列表中的值

c# - Linq 从 View 中选择行?

c# - 我可以让这个 Linq to EF 更有效率吗?