.net 如何使用;包括「;或;例如;在动态linq查询中?
CSharpSamples.zip中的Dynamic Linq附带的帮助文件没有显示任何使用contains或类似内容的示例 有什么简单的解决办法吗?i、 e其中(col like@col)不起作用。实际上,Linq2Sql中直接支持like运算符:.net 如何使用;包括「;或;例如;在动态linq查询中?,.net,linq,linq-to-sql,dynamic,.net,Linq,Linq To Sql,Dynamic,CSharpSamples.zip中的Dynamic Linq附带的帮助文件没有显示任何使用contains或类似内容的示例 有什么简单的解决办法吗?i、 e其中(col like@col)不起作用。实际上,Linq2Sql中直接支持like运算符: db.MyTable.Where(a => SqlMethods.Like(a.Name, "%"+searchTerm+"%")) 请看这里: 。。。但我更喜欢在大多数应用程序中使用startsWith、endsWith和contain
db.MyTable.Where(a => SqlMethods.Like(a.Name, "%"+searchTerm+"%"))
请看这里:
。。。但我更喜欢在大多数应用程序中使用startsWith、endsWith和contains。答案如下!动态Linq确实支持。接线员 根据文件: “实例字段或实例属性” 访问。任何公共字段或属性 可以访问。” 因此,可以使用这种语法
.Where("MyColumn.Contains(@0)", myArray)
谢谢你的建议!感谢我找到了解决方案。对我来说,解决方案是outerIt
class User { public string Name { get; set; } }
...
IQueryable<User> query = db.Users;
...
query = query.Where("@0.Contains(outerIt.Name)", list);
class用户{公共字符串名称{get;set;}
...
IQueryable query=db.Users;
...
query=query.Where(“@0.Contains(outerIt.Name)”,list);
请注意,outerIt是一种内置于库中的关键字(您不需要修改它,因为您可以在这里的答案中阅读它)。您可以通过它访问查询类型的属性。请注意,我正在示例文件中讨论Visual Studio附带的动态LINQ。在这个版本中,我可以使用字符串“mycl=@mycl”定义where查询。我知道一些简单的例子,我真正想做的是插入字符串“like”来代替字符串中的“=”,并使用动态Linq来解析它。但是,我会四处找工作。我认为没有添加它的原因是他们在System.Linq.Expressions上构建了解析器,而System.Linq.Expressions没有这个方法。要清楚,我可以这样做“UserName=@0,Contact.FirstName=@1”,但不能这样做“UserName like@0,Contact.FirstName like@1”,它们是字符串,并使用动态Linq语法:dc.table.Where(mystring,array)如何在可空列上执行此操作?@Teddy.Where(“MyColumn!=null&&MyColumn.Contains(@0)”,myArray)如何将网格
FilterExpression
转换为此语法?有一些NuGet动态LINQ库,包括.NET4.0支持。。。我们是否知道是否有添加了从LIKE到Contains(或其他)的转换支持?是的,一旦SQL Server在未来的版本(2016?)中永久性地打开ANSI_null,您最好检查null<当x为null时,与“%something%”不同的code>x和与“%something%”相似的x
都将计算为false,因为这两种情况下的比较结果都是未知的。非常不直观。或者,null在比较like之前将字段合并为空字符串:(MyColumn??)。包含(@0)
,希望LINQ在比较like之前将其转换为SQL ISNULL函数调用。我想知道是否可以在计算列中使用它进行搜索?我想在Select调用中使用上述语法,这样我就可以返回布尔列,告诉我该值是否包含搜索项。