问题标签 [dynamic-linq-core]

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 回答
125 浏览

c# - 如何按日期的一部分动态过滤

如果我想在动态查询中构建特定规则,其中部分条件声明

一年中的同一个月

我有以下数据源:

如何写这样的东西:

我想要类似的方法Year() or Month()或等效的方法来做类似的事情。

0 投票
1 回答
50 浏览

linq - LINQ Core 中的 Pivot 和 Unpivot

我是 LINQ 核心的新手。我想在 LINQ Core 中编写一个查询,以便在表上执行 PIVOT 和 UNPIVOT。我已经为它编写了 SQL 查询,但在转换为 LINQ 查询时需要帮助。我搜索了几篇文章,但没有帮助。

下面是我需要将其转换为 LINQ 查询的 PIVOT 和 UNPIVOT 的 SQL 查询:

任何人都可以帮助我吗?

0 投票
1 回答
316 浏览

c# - 如何在 LINQ 中将行转换为列

我在图像中有第一个输出,我想使用 LINQ Core 将其转换为图像中的第二个输出。LINQ 中是否存在直接 unpivot 选项。

我能够在 SQL 中编写 PIVOT 和 UNPIVOT 的代码。但无法在 LINQ 中找到相同的方法。

我有以下相同的 SQL 查询:

在此处输入图像描述

0 投票
0 回答
116 浏览

c# - 将 IQueryable 应用于 Linq Dynamic 后,Count() 不起作用,在 EF Core 中引发“必须是可简化节点”错误

工作时param.SearchValue == string.Empty Count()。但在其他情况下Count()或任何其他执行都不起作用,抛出异常:

必须是可约节点

这是我的代码:

我的目标是创建一个动态查询。columnNameList返回我在数据表中使用的标题。我通过使用循环添加OrElse到这些标头来创建一个 IQueryable 查询。退出此循环后foreach (string ColumnNameItem in columnNameList)不执行。query = query.Where(expressionCombine);

这些是表达方法:

0 投票
3 回答
579 浏览

c# - 将我的值类型转换为可为空的等价物

我有一个临时报告系统;我对查询的源类型或所需字段没有编译时知识。我可以在运行时使用工厂方法编写表达式树System.Linq.Expressions.Expression,并使用反射调用 LINQ 方法,但动态 LINQ 是一种更简单的解决方案。

报告系统将允许返回 LEFT JOIN 结果的查询。联接表中有字段在NOT NULL数据库中;但因为这是 a LEFT JOIN,所以这些字段将包含NULL某些记录。EF6 生成的表达式落在此之上,因为该表达式投影为不可为空的值类型。

如果我在编译时 LINQ 中执行此操作,我将显式转换为可空类型:

动态 LINQ 支持显式转换:

但查询中只能引用一组特定的类型。如果我尝试Color在查询中使用:

我收到以下错误:

“颜色”类型中不存在适用的方法“颜色”

如果我尝试显式转换为Color?

我得到:

未找到请求的值“颜色”。

如何使用动态 LINQ 库来做到这一点?

0 投票
0 回答
380 浏览

c# - 尝试使用 Newtonsoft.Json.Linq 和 System.Linq.Dynamic.Core

我想要完成的是检查 JSON 文档是否符合约束,如果符合则转换文档。另一个要求是约束是用户定义的,我需要将它们存储在文档数据库中。

我最初的想法是使用 JSON-path 来选择我想要测试的令牌。这被证明是不可能的,因为 JSON-path 没有兄弟姐妹或父母的概念。但是,如果我将 JSON-path 与来自 json.net 的 LINQ 结合起来,我可以使用 SelectToken 找到一个令牌,然后调用 Next 来获取我可以依次测试的兄弟姐妹。像这样的表达式还有一个额外的好处,即用户可以通过 UI 相对容易地进行配置,并且可以将其作为字符串存储在文档数据库中。

所以我尝试做一个 PoC 并立即遇到了一个我无法解决的大问题。下面的示例是该 PoC 的简化版本。我要做的是运行System.Linq.Dynamic.Core并查询Newtonsoft.Json.Linq.JObject。我可以访问属性,但是当我尝试使用 SelectToken 时出现异常。

如果我运行以下示例:

我明白了:

通过查看 System.Linq.Dynamic.Core 的代码,看起来,由于 JObject 实现了 IEnumerable,它不会尝试寻找方法。它只是假设它应该是一个 linq 运算符。我可以通过为实现 SelectToken 而不是接口 IEnumerable 的 JToken 实现一个包装类来绕过这一点。这是一个非常麻烦的解决方法,我真的不想这样做。

有没有其他人遇到过这个问题并且可以提供更好的解决方案或解决方法?

0 投票
1 回答
208 浏览

.net - “DataRow”类型中不存在适用的方法“Select”

我有一个数据表结果,我使用 AsEnumerable 扩展将其转换为 Enumerable。

var dataTableToEnumerable = dataTable.AsEnumerable();

现在我使用 Linq 动态扩展对其进行了 groupBy,它工作正常,但我无法对聚合结果进行处理Select()Sum()等等Min()

但是存在诸如 Count(),First(),FirstOrDefault() 之类的方法。

同样参考这个问题,我将查询更改为:-

但现在它的表现No Method Select exist on IEnumerable<IGrouping<DynamicClass,DataRow>>

它给出了错误No applicable method 'Select' exists in type 'DataRow',有人可以帮忙吗?

#更新1

我已经尝试过第一个答案。它工作正常,但是在 groupby 之后有多个字段选择,我该如何更改它?这是我的查询:- dataTableToEnumerable.AsQueryable().Where("(it[\"yoko\"] != null && it[\"price\"] != null)") .GroupBy("new(it[\"proposalid\"] as proposalid,it[\"yoko\"] as yoko)", "it") .Select("new(it.Select(it[\"price\"] as price,it[\"cost\"] as cost)")

结果集是正确的,但是,
.AsEnumerable() .Select(pg => (((IEnumerable<object>)pg).Sum(p => (double)p)));

这导致错误

无法将“<>f__AnonymousType15`2[System.Object,System.Object]”类型的对象转换为“System.IConvertible”类型。

0 投票
1 回答
164 浏览

c# - 找不到实体核心动态 LINQ LIKE 函数

我正在尝试使用他们网站上的示例在我的 .net 核心项目中使用 ZZZ Dynamic LINQ 库,但我遇到了问题。使用他们自己的 JS fiddle 会出现同样的问题,本质上它似乎在评估查询字符串时正在查看 DynamicFunctions.Like 函数的实体。

我正在像这样构建我的查询

在循环内部,我在运行时收到的异常是

您可以在他们的示例中看到问题发生在这里https://dotnetfiddle.net/dy4vkE

这个 API 有变化吗?谁能指出我正确的方向?

0 投票
1 回答
234 浏览

c# - 为什么 System.Linq.Dynamic.Core OrderBy 不能与 ImmutableArray 一起使用?

我正在尝试将 System.Linq.Dynamic.Core 与 ImmutableArray 一起用于动态 OrderBy,但出现以下异常:

Expression of type 'System.Collections.Immutable.ImmutableArray`1[$customType]' cannot be used for parameter of type 'System.Collections.Generic.IEnumerable`1[$customType]' of method 'System.Linq.IOrderedEnumerable`1[$customType] OrderByDescending[$customType,Int32](System.Collections.Generic.IEnumerable`1[$customType], System.Func`2[$customType,System.Int32])' (Parameter 'arg0')

为什么是这样?他们是否为不可变类型定义了特定的验证?普通 OrderBy 完全有能力对其进行排序。这应该作为功能请求提交给他们,还是我遗漏了一些明显的东西?一旦它被投射到一个列表中,它就像一个魅力。

0 投票
0 回答
32 浏览

c# - System.Dynamic.Linq.Core + PostreSql 调用 date_part 函数

大家好,对不起我的英语不好!

我正在使用 Entity Framework Core 5 + Postgre +动态 linq 核心做一些测试

我的 DataContext 定义如下:

实体 Anagrafica 定义如下:

问题:是否可以在 where 中使用 date_part 函数?

如果我运行代码

我收到错误消息

System.Linq.Dynamic.Core.Exceptions.ParseException:'Anagrafica' 类型中不存在适用的方法'date_part''

是否可以在 Dynamic Linq 中使用数据库函数和/或 UDF?如果有可能做到这一点,我错了吗?

谢谢!