问题标签 [linq-expressions]

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

linq - LINQ 的 Expression.Quote 方法的目的是什么?

MSDN 文档指出:

表达式.引用

方法 创建一个 UnaryExpression,它表示具有 Expression 类型的常量值的表达式。

我已经能够通过使用 Expression 类手动构建谓词表达式来构建用于 LINQ 查询的谓词表达式,但从未遇到过对 Expression.Quote 的需求。

您何时以及为什么要使用它?从我看到的拥有它们的 LINQ 表达式来看,它们似乎只是包装了现有的表达式而没有添加任何值。

Quote 方法/节点类型的用途是什么?

0 投票
1 回答
1248 浏览

c# - 使用 Linq 表达式作为父/子查询的规范模式

我正在尝试使用作为 Linq 表达式实现的规范模式,以便 Linq 提供者可以解析它以产生高效的数据库查询。

给出了基本的想法。

我很难尝试让它与父/子查询一起使用

0 投票
2 回答
664 浏览

c# - 如何在定义时没有参数之一时转换 LINQ 表达式

我正在尝试在我的应用程序中构建更通用的查询功能。我想做的是定义给定谓词表达式的对象,该对象可以将其应用于具有稍后将传入的值的 iqueryable。

我相信下面的代码应该证明我正在努力做的事情足以理解这个问题。如果您想了解更多详情,请告诉我!

谢谢!

0 投票
1 回答
1813 浏览

linq - 在 Select 语句中调用表达式 - LINQ to Entity Framework

我正在尝试使用在尝试执行 select 子句时创建的现有 Expression 构建类,但我不确定如何将表达式附加到 Select 的表达式树,我尝试执行以下操作:

但我显然收到错误消息,指出实体框架无法将 Invoke 映射到 SQL 方法。有没有办法解决这个问题?

仅供参考, EntitiesExpressionHelper.MakeTranslationExpression<T>(string name, int languageID) 相当于:

编辑:我意识到我需要使用 ExpressionVisitor 来完成此操作,但我不确定如何使用 ExpressionVisitor 来更改 MemberInitExpression,所以如果有人知道如何完成此操作,请告诉我。

0 投票
1 回答
917 浏览

c# - Linq to Nhibernate - 比较 2 个列表

我有 2 个列表,我需要知道是否有任何匹配项。我试过使用request.Interests.Intersect(x.Post.Tags.Split(' ')).Count() > 0,但我得到了错误

System.NotImplementedException :方法 Intersect 未实现。

所以,我尝试了一个返回布尔值的递归函数。就好像函数调用被忽略了。

这是我的功能

这是我的 linq 表达式的相关部分的样子。

当 GenerateInteresExpression 中有断点时,它不会暂停。我尝试构建一个递归函数来动态构建表达式,但我不知道如何将 linq 表达式链接在一起。关于如何使用动态 linq 为 linq 休眠的任何想法?

0 投票
1 回答
14925 浏览

.net - 为什么有些对象属性是 UnaryExpression 而有些是 MemberExpression?

根据我的使用 lambda 而不是字符串属性名称问题选择模型属性的答案,希望将属性添加到集合中,如下所示:

我在方法中写了以下代码Include

但是,在运行代码时,我发现一些 lambda 表达式按预期产生了MemberExpression值,而其他的则产生了UnaryExpression值。在使用 lambdas 添加所有属性之前,我必须将第一行代码更改为以下代码:

所有属性都是“简单”类型,即 POCO 业务对象中的 string、DateTime、int、bool 等。它们装饰有几个不同的DataAnnotations属性。

是什么导致我的示例中的某些 lambda 产生MemberExpression值和其他UnaryExpression值?在我的示例中,第一个UnaryExpression位于第三行,即DateTime属性,但布尔属性也会导致UnaryExpressions

0 投票
3 回答
522 浏览

.net-4.0 - 将 MethodBody 转换为表达式树

有没有办法将 MethodBody(或其他反射技术)转换为 System.Linq.Expressions.Expression 树?

0 投票
2 回答
917 浏览

c# - 表达> - 如何处理模棱两可的方法签名?

我有一个看起来像这样的接口合同:

Foo 和 Bar 是继承自 FooBar 抽象类的具体类。

现在,我在尝试调用这些方法时遇到了问题:

它出现“模糊调用”错误,这是有道理的,因为属性“UserId”存在于抽象“FooBar”类型上(因此也存在于 Foo 和 Bar 上)。

那么,我该如何克服呢?

我喜欢我的接口(重载谓词方法)的外观,因为从调用代码的智能感知角度来看,只有一个方法名称。

为什么我的界面是这样的?好吧,有些场景我希望只返回“Foo”或“Bar”,其他时候我需要一个混合包,因此我需要返回抽象类型 - 有意义吗?

无论如何,关于一个明显的问题 - 有没有办法解决这个问题?(除了重命名我的接口方法)?(从而损害了简单性)

0 投票
1 回答
6660 浏览

c# - C# 强制运算符?

我得到了这个测试:

它抛出了一个有点奇怪的异常:

测试“Unit.Web.Bootstrap.AutoMapperFacts.EverythingIsMappedJustFine”失败:
System.InvalidOperationException:
“System.Void”和“System.Object”类型之间没有定义强制运算符。
在 System.Linq.Expressions.Expression.GetUserDefinedCoercionOrThrow(ExpressionType coercionType, Expression expression, Type convertToType)
...
在 AutoMapper.DelegateFactory.CreateGet(MethodInfo 方法)

不幸的是 - 我无法以较小的规模重现这一点,也无法弄清楚到底发生了什么。

什么是强制运算符?


可能很有用。但是我没有提取和减少必要的信息位。

0 投票
1 回答
648 浏览

c# - 合并或重用 LINQ 表达式

我有一个 LINQ 表达式,它在 LINQ to SQL 语句 where 子句中用作文件管理器。我的问题是 LINQ to SQL 表达式变得笨拙,而且它包含的逻辑最终出现在多个违反 DRY 的位置(这是我第三次处理 QA 提出的错误,因为它不同步)。

有什么方法可以重用如下所示的 LINQ 表达式或将其分解为更小的子表达式?我最大的问题是,因为表达式用于 LINQ to SQL 调用,所以它不能使用任何其他类或方法,因为 LINQ to SQL 库不知道如何将它们表示为 SQL。

理想情况下,我想做的是如下所示。它不起作用,因为 LINQ to SQL 无法表达 GetStatus() 方法。希望有其他聪明的方法来做到这一点?