问题标签 [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.
c# - 如何转换表达式> 到表达式>
有没有办法转换Expression<Func<T, object>>
成Expression<Func<object, object>>
?
linq-to-entities - 基于另一个 LINQ 表达式和值构建特定的 LINQ 表达式
如果我有以下形式的 LINQ 表达式:
有什么办法可以得到下面的表达式?
我需要在 Linq-to-Entities Where 调用中使用第二个表达式。
optimization - 如何优化 LINQ 表达式?
在使用 .NET 3.5 构建的项目中,我使用 LINQ 表达式在运行时动态生成代码。LINQ 表达式使用 Compile 方法编译并存储以供以后用作 LINQ to 对象的谓词。
表达式有时非常复杂且难以调试。
下面是通过 Visual Studio 中的调试器可视化工具查看的表达式示例。
{request => (Invoke(workEnvelopeHead => (workEnvelopeHead.Method = value(Wombl.Scenarios.CannedResponses+<>c_ DisplayClass58).pipeline), request.WorkEnvelope.Head) 和 Invoke(body => Invoke(value(Wombl.Scenarios) .CannedResponses+<>c _DisplayClass78).isMatch, body.SingleOrDefault()),Convert(request.WorkEnvelope.Body.Any)))}
我希望能够像上面那样优化表达式,以便将value(Wombl.Scenarios.CannedResponses+<>c__DisplayClass58).pipeline
表达式替换为变量值的常量。
在这种特殊情况下,value(Wombl.Scenarios.CannedResponses+<>c__DisplayClass58).pipeline
是 lambda 中对父作用域中变量的引用。就像是:
优化后的原始表达式应如下所示:
{request => (Invoke(workEnvelopeHead => (workEnvelopeHead.Method = "[My variable's value here]", request.WorkEnvelope.Head) And Invoke(body => > Invoke(value(Wombl.Scenarios.CannedResponses+<>c__DisplayClass78) .isMatch, body.SingleOrDefault()),Convert(request.WorkEnvelope.Body.Any)))}
在编译之前,如何在运行时对 LINQ 表达式进行此类优化?
c# - 为 linq to 实体创建动态排序方法
可能重复:
动态 LINQ OrderBy
我正在使用实体框架并想创建自己的动态排序方法,让您输入一个字符串来进行排序,例如query.DynamicSort("Name, Age DESC")
.
我知道 MS 已经发布了一些动态 linq 代码,但这超出了我的需要,我正在尝试了解如何自己编写一个简化版本来进行排序。
我有一些运气让它适用于单个字段......但是当我尝试按多个字段排序时,我收到以下错误:
参数“x”未绑定在指定的 LINQ to Entities 查询表达式中。
这是我的代码。任何人都可以看到我哪里出错并可能提出一些修改吗?我在动态构造表达式方面很弱。
非常感谢。
c# - 使用 Expression[] 调用 (params object[])
我试图从 Linq.Expression 树中调用 String.Format 。这是一个简单的例子:
然而,问题是 String.Format 具有以下签名:
我正在尝试传递表达式 []。
现在我可以通过创建一个数组的所有麻烦,用我的表达式的结果填充它,但我真正想要的结果是这样的:
如何通过 Linq 表达式调用 params 函数?
c# - 将几个相似的 SELECT 表达式组合成一个表达式
如何将几个相似的 SELECT 表达式组合成一个表达式?
c# - LINQ 成员表达式获取列名
你好,
我在 C# 4.0 中使用 LINQ 和 EF。我已将基本的 ELMAH 表拖到 EF 中(多次构建和保存)。一切都按预期工作。
但是试图过于雄心勃勃并且需要一点帮助 - 我试图从作为变量传递的表达式中获取列名。
我想要的是这样的:
传入:x=>x.ErrorId
并得到:“ErrorId”
感谢您的帮助!担。
c# - 使用 Linq 表达式的左外连接
我正在尝试使用 Linq 表达式构建左外连接查询,但现在我真的碰壁了。
我想要完成的是以下查询:
我已经定义了以下类:
我创建了没有编译错误的 GroupJoin 表达式。(我在这里省略了一些代码):
但是在 SelectMany 方法中,我试图添加 DefaultIfEmpty 但我得到一个异常说:
类型“System.Linq.Queryable”上没有通用方法“DefaultIfEmpty”与提供的类型参数和参数兼容。如果方法是非泛型的,则不应提供类型参数。
我已经尝试将 typeparams 从 IQueryable 切换到 IEnumerable 并且事件尝试调用 Enumerable.DefaultIfEmpty 但没有运气。也许是 PropertyExpression 有问题?
linq - 如何创建表达式集合>?
我有一个使用以下方法的存储库:
我需要传递多个表达式。我正在考虑将签名更改为:
- 这可能吗?
- 例如,如何创建一个表达式数组以传递给此方法?
目前我正在从我的服务层调用该方法,如下所示:
但我想通过p => p.Variants
,p => p.Reviews
例如。然后在存储库中,我想遍历表达式并将它们添加到查询中。
有关我为什么这样做的一些背景信息,请参阅 Ben Foster 的博客文章Eager loading with NHibernate。
linq - Linq to Entities:获取“平均”餐厅评分的复杂查询
所以我正在为我的社区建立一个餐厅评论网站。我需要从下表中提取数据:RESTAURANT、CUISINE、CITY、PRICE 和 RATING(客户评级)。
查询应返回所选 CUISINE_ID 的所有餐厅,并返回 RESTAURANT_NAME、CUSINE_NAME、CUTY_NAME、PRICE_CODE,它应平均所有评论 RATING_CODE 并返回计算值。我可以返回除平均评分之外的所有数据。
我只使用 LINQ to Entities 2 天和 LINQ 大约 3 周,所以我真的是一个新手;我正在等待从 Amazon.com 交付我的 LINQ 书。感谢您的帮助指导!