Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何使用;包括「;或;例如;在动态linq查询中?_.net_Linq_Linq To Sql_Dynamic - Fatal编程技术网

.net 如何使用;包括「;或;例如;在动态linq查询中?

.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

CSharpSamples.zip中的Dynamic Linq附带的帮助文件没有显示任何使用contains或类似内容的示例

有什么简单的解决办法吗?i、 e其中(col like@col)不起作用。

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

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调用中使用上述语法,这样我就可以返回布尔列,告诉我该值是否包含搜索项。