我有一个搜索查询的字符串列表 我想看看数据库中的字符串是否包含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
是否有能够更好地完成这项工作的功能或更优化的写作方式?
答案 0 :(得分:1)
您提出的解决方案存在两个问题:
大多数LINQ to SQL提供商都不理解字符串 .Contains(" xyz")因此提供程序将抛出异常或获取所有数据到你的机器。正确的做法是使用SqlMethods.Like,如Using contains() in LINQ to SQL
此外,您显示的代码将检查该分部是否包含所有指定的字符串。
实施' any'构建自定义表达式所需的行为,使用普通的C#是不可能的。您需要查看System.Linq.Expressions命名空间:https://msdn.microsoft.com/en-us/library/system.linq.expressions(v=vs.110).aspx
这是可能的,但非常复杂。