问题标签 [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 回答
760 浏览

.net - 如何动态创建 Linq 表达式?

我正在尝试找出一种动态创建 Linq 表达式的方法。据我了解,这些表达式是引入 .NET 的新元编程功能之一,我认为要动态创建这些表达式,我可以从字符串值中完成,但也提到了能够做到这在运行时。VB.NET 或 C# 中的示例会很棒。

0 投票
1 回答
649 浏览

linq - MemberExpression 到 MemberExpression[]

目标是从两个 LambdaExpressions 中获取 MemberExpressions 数组。第一个可转换为返回对象实例的 MethodCallExpression ( Expression<Func<T>>)。第二个 Lambda 表达式将获取已编译的第一个表达式的结果并返回一个嵌套成员 ( Expression<Func<T,TMember>>)。我们可以假设第二个 Lambda 表达式只会调用嵌套属性,但可能会调用其中的几个。

所以,我试图创建的方法的签名是:

MemberExpression[] GetMemberExpressionArray<T,TValue>(Expression<Func<T>> instanceExpression, Expression<Func<T,TValue>> nestedMemberExpression)

wherenestedMemberExpression将被假定采用形式的参数

parent => parent.ChildProperty.GrandChildProperty

parent结果数组表示来自toChildProperty和来自 to 值ChildProperty的MemberAccess GrandChildProperty

我已经MemberExpression使用以下扩展方法返回了最后一个。

现在,我知道有几种方法可以做到这一点。对我来说最直观的方法是遍历.Expression属性以获取第一个表达式并捕获对每个 MemberExpression 的引用。这可能是最好的方法,但也可能不是。我对使用这样的表达式所带来的性能成本并不是特别熟悉。我知道 MemberExpression 有一个 MemberInfo 并且反射应该会损害性能。

我试图搜索有关表达式的信息,但我的资源在我找到的内容中非常有限。

对于如何以最佳性能和可靠性完成此任务(通常是此类任务)的任何建议,我将不胜感激。

0 投票
3 回答
197 浏览

linq - 将 lambda 传递给 Where 语句

我今天注意到,如果我这样做:

一旦我访问 items var,它只执行第一行作为数据调用,然后在内存中进行第二次调用。但是,如果我这样做:

我只得到一个针对包含两个 where 语句的上下文执行的表达式。我有许多变量,我想用它们来构建 linq lambda 的表达式,但是它们的存在或不存在会改变表达式,因此我必须有大量的条件来满足所有情况。我想我可以像上面的第一个示例一样添加 Where() 语句,但这不会以包含所有条件的单个表达式结束。因此,我试图只创建 lambda 本身:

然后将其传递到我的 context.Items 的位置进行评估。A)这是对的,B)如果是这样,你是怎么做的?

编辑:

结果是

为什么没有 top x(以 pageSize 表示)?

0 投票
2 回答
299 浏览

linq - linq to sql 多个 Where() 语句不创建单个表达式

我的理解是以下代码:

应该导致查询(假设日期通过条件),如:

我已经逐步完成并确认两个 Where() 语句正在设置,但是当我调用 things.ToList() 时,我得到了查询:

为什么没有将两个 where 合并到实际运行的查询中?

0 投票
1 回答
664 浏览

vb.net - 带有 linq 表达式的动态属性设置器?

我想创建一个执行以下操作的简单函数:

用法:

0 投票
1 回答
1435 浏览

c# - 使用 linq 表达式如何创建和返回委托?

在 C# 中,我尝试使用 linq 表达式来生成对某些方法的调用。该方法的参数之一是委托。我有我想作为委托传递的方法的 MethodInfo 我只是不确定用于创建委托的 linq 语法。

这有点做作,但我希望这表明我正在尝试做的事情:

问题是委托的构造函数要求一个 IntPtr,我不知道如何得到它!有没有比尝试使用 New() 表达式方法更直接的方法来创建委托对象?

0 投票
1 回答
233 浏览

c# - Linq 表达式的转换

因此,我不确定我要达到的目标究竟是什么 - 写了一些代码:

这甚至可能吗?

0 投票
1 回答
10738 浏览

c# - 从范围引用的“产品”类型的变量“x”,但未定义

我有一个Product在类库项目中命名的类。我SubSonic SimpleRepository用来持久化对象。我在课堂上有一个方法如下Product

我这样调用这个函数:

调用LoadfromBindData抛出异常:

我该如何解决这个问题。

编辑:-通过单步SubSonic执行代码,我发现此函数引发了错误

0 投票
1 回答
1853 浏览

asp.net-mvc - .NET MVC 强类型助手 - 从属性中获取价值?

我正在创建一个强类型助手(参考:SO question)。正如下面代码中的“注释”,是否有可能以某种方式从表示的属性中获取值,从而绕过可选selectedValue参数?

0 投票
1 回答
142 浏览

linq - 对子集合的投影 - EF4

让我们假设使用 EF4 的以下模型:

然后我可以使用 Linq 对这个结构进行投影:

到目前为止一切顺利,这将完全翻译成sql。

现在问题来了,如果我想在这个查询中提取 where 子句谓词怎么办:

这会编译,但在运行时会失败,因为 EF4 无法将谓词转换为 SQL,因为它是 Func 而不是表达式。

将谓词更改为 anExpression<Func<OrderDetail,bool>>将不起作用,因为 OrderDetails 上的“.Where”链接到 IEnumerable“Where”,因为详细信息是 ICollection。

那么,如果遍历的属性是 IEnumerable 或类似的,是否可以提取更大的 Linq 查询的一部分?