如何在动态linq查询中使用“包含”或“喜欢”?

时间:2010-03-16 15:27:24

标签: .net linq linq-to-sql dynamic

CSharpSamples.zip中Dynamic Linq附带的帮助文件未显示使用contains等的任何示例。

这样做有什么简单的解决方法吗?即(像@col这样的col)不起作用。

3 个答案:

答案 0 :(得分:60)

这是答案! Dynamic Linq确实支持。运营商,

根据文件:

  

“实例字段或实例属性   访问。任何公共领域或财产   可以访问。“

因此,可以使用此语法

.Where("MyColumn.Contains(@0)", myArray)

感谢所有的建议!感谢我找到解决方案。

答案 1 :(得分:11)

对我来说,解决方案是 outerIt

   class User { public string Name { get; set; } }
   ...
   IQueryable<User> query = db.Users;
   ...
   query = query.Where("@0.Contains(outerIt.Name)", list);

请注意, outerIt 是一种在库中构建的关键字(您无需修改​​它,因为您可以在此处的答案中阅读它)。您可以通过它访问查询类型的属性。

答案 2 :(得分:4)

实际上,Linq2Sql中对like运算符有直接支持:

db.MyTable.Where(a => SqlMethods.Like(a.Name, "%"+searchTerm+"%"))

见这里:

http://msdn.microsoft.com/en-us/library/system.data.linq.sqlclient.sqlmethods_members.aspx

...但我更喜欢在大多数应用程序中使用startsWith,endsWith和contains。