Linq检查字符串是否包含列表中的任何查询

时间:2015-10-27 15:53:38

标签: c# entity-framework linq

我有一个搜索查询的字符串列表 我想看看数据库中的字符串是否包含Query中的任何一个术语。我想在一行代码上执行此操作,这不会对数据库进行多次调用。这应该有效,但我希望它更加优化。

"Generate a string with N opening brackets ("[") and N closing brackets     ("]"), in some
arbitrary order. You will need to use random numbers.
Determine whether the generated string is balanced; that is, whether it     consists entirely of
pairs of opening/closing brackets (in that order), none of which mis-nest.
Examples:
 [] OK ][ NOT OK
[][] OK ][][ NOT OK
[[][]] OK []][[] NOT OK

是否有能够更好地完成这项工作的功能或更优化的写作方式?

1 个答案:

答案 0 :(得分:1)

您提出的解决方案存在两个问题:

  1. 大多数LINQ to SQL提供商都不理解字符串 .Contains(" xyz")因此提供程序将抛出异​​常或获取所有数据到你的机器。正确的做法是使用SqlMethods.Like,如Using contains() in LINQ to SQL

  2. 中所述
  3. 此外,您显示的代码将检查该分部是否包含所有指定的字符串。

  4. 实施' any'构建自定义表达式所需的行为,使用普通的C#是不可能的。您需要查看System.Linq.Expressions命名空间:https://msdn.microsoft.com/en-us/library/system.linq.expressions(v=vs.110).aspx

    这是可能的,但非常复杂。