问题标签 [dynamic-linq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
363 浏览

linq-to-entities - 动态 Linq 不适用于 Linq to Entity

我正在研究 Linq To 实体的小项目。需要根据用户设置的搜索条件/过滤器过滤数据。由于过滤器/搜索条件可以适用于视图中显示的任何字段,因此我决定使用 Dynamic Linq。

我从Scotgu 的博客下载了这个库。在我的类中引用了 System.Linq.Dynamic,我创建了一个示例类,它执行如下所示的动态 linq 查询,

但是,在上面的代码块中,当查询执行时,我得到了错误,

在当前范围或上下文中无法解析“名字”。确保所有引用的变量都在范围内,加载了所需的模式,并且正确地引用了命名空间。接近简单标识符,第 8 行,第 1 列。

我已经检查了很多关于这方面的帖子,但帮助很少......

有关如何解决上述错误的任何指示都会很棒...谢谢...

PS 在 DataContext 上的类似查询工作正常......

0 投票
1 回答
1758 浏览

c# - 动态表达式 API:我可以做一个谓词,如何编写 OrderBy 规范?

我想出了如何从基于Dynamic Linq的客户端提供的字符串中执行谓词(这包含在 Specification 对象中):

其中 filter 是其帮助文件中描述的表达式语言字符串。奇迹般有效。

但是,是否可以将 orderby 字段的字符串列表转换为强类型表达式,如下所示:

笔记:

这是我过滤和订购商品的存储库方法

我想使用以下方法调用它:

关于如何将 OrderBy 字段的字符串列表转换为强类型 lambda 表达式的任何想法?字符串的示例是:

另一个注意事项:

我正在翻译来自客户端的字符串,这些字符串正在使用正则fieldname op value表达式验证它们以防止注入。另外,我只在 Specification 对象中引用 Dynamic Linq,而不是存储库。

0 投票
1 回答
1059 浏览

c# - 在访问特定于类型的属性时对基本类型的集合进行动态 Linq 查询

如何在基本类型(如 IPerson 接口)的集合上运行动态 LINQ 查询,但访问特定于实现的属性(如 Age)。

我可以确定集合中的所有项目都是相同的,即查看第一种类型,我可以假设其他类型相同。

我需要一个可以将过滤器应用于不同集合的 UI,用户可以看到所有可用的属性。

这是我想做的一个例子,Expression.Call 方法抛出一个异常:

0 投票
1 回答
3454 浏览

.net - VB.NET 和 System.Linq.Dynamic 命名空间

我会使用System.Linq.Dynamic

我添加了指定的Dynamic.vb文件,开头是这样的:

到我的(VB.NET)解决方案。

现在 Visual Studio 不再识别项目文件中的System.XXX引用,建议我将它们更改为Global.System.XXX 在此处输入图像描述

是达斯,又该如何管理呢?

0 投票
5 回答
8501 浏览

c# - 如何在动态 Linq 中使用枚举?

我想在我的动态 LINQ 查询中使用枚举。

是否有可能,如果,如何?

考虑下面的代码:

0 投票
1 回答
4258 浏览

.net - Lambda 表达式“包含”

我使用动态过滤器,它使用对象属性、运算符和值过滤集合。现在,如果属性是字符串,运算符是“包含”,值是“单词”,则应相应地过滤包含“世界”的过滤对象。

在 Linq 中,我有表达式。Equal, NotEqual, GreaterThanOrEqual,LessThanOrEqual

但没有“ Contains”。如何更换它?

考虑以下代码(在 VB.NET 中,但没关系)

编辑:

使用的解决方案,感谢 Thomas Levesque 和 Jon Skeet )

0 投票
1 回答
163 浏览

.net - Linq 表达式找不到公共方法... :-/

我编写了一个表达式来测试对象的属性(枚举)是否设置了一些标志。

下面的代码使用枚举的 HasFlag 函数测试对象的有效性是否“包含”星期一。

实际上,Call 方法似乎没有找到相应的“HasFlag”......我在下面的代码中做错了什么?

0 投票
1 回答
5560 浏览

c# - 如何使用 Dynamic Linq 进行左外连接?

我试图在这里模仿左外连接,但使用动态 linq 扩展方法。我有的:

和:

然而,我跌倒的地方DefaultIfEmptySelectMany

0 投票
1 回答
283 浏览

dynamic-linq - EntitySqlException: The command parameter syntax '@0' is not valid

I'm getting this error when I issue this:

The command parameter syntax '@0' is not valid. Near line 6, column 37.

  • xWhere is a string containing value "(ProjectStatuses.Any(DepartmentID = @0))"
  • parameterList is Dim parameterList As New List(Of ObjectParameter)

It contains one element with value 1 of type Int32 which corresponds to the type of DepartmentID.

0 投票
1 回答
1665 浏览

c# - C# System.Linq.Dynamic:如何将对象 [] 参数传递给 SqlQuery

为什么:

...给我以下错误?:

我知道如果我这样做会起作用:

...但我想抽象代码并将其称为,例如:

即,我的问题是我无法弄清楚如何传入参数数组。

编辑:

接受的答案回答了这个问题,但还有另一个问题:您需要对数组进行参数化,即,不仅仅是值,而是将它们作为命名 SqlParameters 的数组传递。看:

SqlQuery 和参数