问题标签 [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 投票
2 回答
2737 浏览

c# - Dynamic Linq - 在运行时设置 orderby 表达式类型

我正在使用动态 Linq 并让 where 子句起作用。现在我正在寻找添加 orderby 子句,但无法设置动态表达式的类型。以下是我拥有的工作代码:

因为我需要在 orderby 表达式中使用不同的属性,所以我希望能够使用类似下面的代码这样的东西,它不起作用。

编译器对删除 orderExpression 的行不满意。有没有办法在运行时设置 Func 的类型?

0 投票
3 回答
2297 浏览

c# - 访问动态类中包含的 Linq 结果

我正在使用 DbLinq,对于这个问题,它应该等同于 Linq2SQL。我需要生成一个 Linq2SQL 查询,在其中指定要在运行时返回的列。我可以使用 Dynamic Linq 扩展方法来实现这一点,但我不知道如何提取结果。

Linq 表达式生成正确的 SQL:

在调试器中,我可以在结果视图中看到 phonenumber 值。问题是我不知道如何从 queryResult 对象中获取 phonenumber 值?queryResult 的类型是:

编辑:我发现了一种方法,但它看起来很粗糙。

也许有人知道更清洁的方法?

0 投票
4 回答
1820 浏览

linq-to-sql - LINQ 查询或存储过程返回指定列中的最大值

表如

一整天每秒 1 行(=86400 行);~40 列;所有相同的格式
我正在寻找一种方法来检索最大值和指定列的时间。

我正在寻找一种方法来检索最大值和在时间范围内指定列的相应时间。

就像是

可以,但我不能将该列用作参数。

LINQ 解决方案或 SP 会很棒。

在对整个数据集进行排序以检索最大值时,我是否需要担心性能?也许MAX函数会更快。

更新

我尝试以动态 linq 方式实现它,就像 Timothy (tvanfossen) 建议的那样

但是这会返回表中的第一个值。这将返回时间范围内的第一个值,而不是最大值。查看 SQL 探查器,我发现没有 ORDER 子句。
任何的想法?

更新 2
由于某种原因,替换值在 orderby 子句中不起作用。
.OrderBY (col + "desc") 有效

0 投票
6 回答
2616 浏览

linq - LINQ 动态表达式 API,与 DBNull.Value 比较的谓词

我在使用动态表达式 API 时遇到问题。我似乎无法将 DataTable 字段与 DBNull.Value 进行比较。该 API 应该能够“支持静态字段或静态属性访问。任何公共字段或属性都可以访问。”。但是给出以下查询:

我最终得到错误:“类型'<>f__AnonymousType0`2'中不存在属性或字段'DBNull'”

有人对如何解决这个问题有想法吗?我不能在传递给 Where 方法的字符串中使用 Submission.Field("NullableIntColumnName"),顺便说一句,否则我将能够与 null 而不是 DBNull.Value 进行比较。

0 投票
3 回答
2857 浏览

linq - 使用动态 Linq 实体框架查询引发的奇怪异常

我有一个画廊实体框架类,我正在尝试使用在 ScottGu 的博客上发布的动态 Linq 库来查询实体集。失败的代码行如下:

sidx=="名称" 和 sord=="desc"。

Gallery 对象确实有一个名为“Name”的属性。但是,执行时,我得到以下异常:

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

有谁知道这意味着什么?

0 投票
5 回答
3679 浏览

c# - 集合上的动态 LINQ?

我有一个项目要求我做一个这么大的搜索引擎,但它都是动态的。我的意思是我可以有大约 0 到 9 个主要的“组”,它们内部有无限的可能性,比如用“OR”或“AND”来“在哪里”。我们首先想到的是使用 Dynamic Linq,它为构建动态查询提供了一个很好的替代方案。所有这些都使用带有自制包装器的 EF。

问题:我无法访问“收藏”。我的意思是,我可以轻松访问引用的对象(如Customer.State.StateName = "New-York" OR Custoemr.State.StateName = "Quebec"),但我找不到访问类似的方法:" Customer.Orders.OrderID = 2 或 Customer.Orders.OrderID = 3"。我可以很容易地弄清楚这是因为它是一个集合,但我该怎么做呢?

请帮帮我!!

** 对不起我的英语不好 !!


更新

我不清楚我认为,对不起,因为我是法国人......

我的问题是因为没有什么是静态的。它是招聘公司的候选人搜索引擎,可将候选人放入企业。在经理可以搜索候选人的页面中,他可以通过以下方式“解析”:域(工作)、城市或许多其他用户在注册时填写的内容。所有这些都是格式(如果它是在 SQL 中):

[...] WHERE(domaine.domainID = 3 或 domaine.domainID = 5 或 domaine.domainID = 23)和(cities.cityID = 4,citys.city = 32)[...]

所以我不能用普通的 LINQ 格式来做到这一点,比如:

即使是括号中的运算符也是动态的(“AND”或“OR”)!这就是我们尝试使用 Dynamic Linq 的原因,因为它更加灵活。

希望它更容易理解我的问题......


更新 2 这是我的方法

相反,它“不返回布尔值”效果很好。那我该怎么办?错误:“预期 'Boolean' 类型的表达式”。

最后,它返回如下内容:“( Domaines.Where( DomaineId == 2 && DomaineId == 3 && DomaineId == 4 && DomaineId == 5 ))。” 添加到我的 LINQ 查询中:

不要忘记还有 7 或 8 个“可能”添加的东西要搜索......有什么想法吗?

0 投票
2 回答
1372 浏览

vb.net - 如何在 LINQ 中获取 Lambda 以实际过滤动态 linq

示例-我有一个人类

结束类

这仍然返回所有 5 人,比如 where 没有被应用,我做错了什么?

我还希望能够传递姓名列表并仅返回那些

0 投票
4 回答
5148 浏览

c# - 动态 LINQ 表达式中的空引用异常

我正在使用 Microsoft 的 Dynamic Linq Library/Sample 在列表中进行排序。例如,我有以下 C# 代码:

我的对象与另一个对象具有 0:1 关系,该对象具有可能显示在网格中的属性。当我们尝试对此进行排序时,只要我所有的小部件都有这个孩子,它就可以正常工作。例如,我们正在订购Child.Name。但是,当 Child 为 null 时,我们会得到 null 引用异常。

我在这里有一些选项,我知道我可以选择匿名类型并绑定到它,我还可以在父对象上公开 Child.Name 并通过代码处理它(我不喜欢为此包含我的对象模型)。

在一个理想的世界中,我想更新库来处理这种情况。在我深入研究之前,我想知道是否有人遇到过这个问题并且已经有了解决方案?

编辑

看来我解释得不够清楚。我正在使用C# 示例附带的动态 Linq 库。这个库添加了一些不错的扩展,让您可以使用字符串代替 lambda 表达式所以我的代码实际上是这样的:

当然,那里的字符串被参数替换。但这允许我们在用户单击网格标题时动态更改排序。我们不必使用 if then else 逻辑来处理所有排列。

我在下面记录的解决方案将我的干净方法更改为:

虽然这可行,但现在这意味着我必须更新此代码,因为我们添加了我们想要在子对象上的网格中公开的新字段或属性。

0 投票
4 回答
2359 浏览

linq - 当您可以使用动态 LINQ 时,规范模式是否已过时?

维基百科指出,规范模式是可以通过使用布尔逻辑将业务逻辑链接在一起来重新组合业务逻辑的地方。关于从列表或集合中选择过滤对象,在我看来 Dynamic LINQ 允许我完成同样的事情。我错过了什么吗?规范模式是否还有其他需要考虑的好处?


编辑:

我发现了一些讨论结合 LINQ 和规范模式的帖子:

Linq 规范项目

Nicloas Blumhardt (Autofac dude) 通过 Linq 实现规范模式

有没有人走过这条路并且维护变得复杂?

0 投票
1 回答
1498 浏览

asp.net-mvc - 使用 Asp.net MVC 中的下拉列表选择选项使用 Linq 进行动态查询

我正在尝试使用 Linq to Sql 和 Asp.Net MVC 来完成此任务:

我有一个带有选项国家、城市和州的下拉列表。在它旁边,有一个文本框。因此,例如,用户将选择 City 并在文本框中键入“new york city”,应用程序将向他显示他选择的结果。

那么,如何根据用户在下拉菜单中选择的内容进行动态查询?我不想做一些硬编码的东西,因为我打算将此查询与其他一些东西一起使用。

非常感谢!!