27得票2回答
LINQ表达式树是合适的树结构吗?

LINQ表达式树是合法的树结构,即没有环的图形(无论是有向还是无向的,维基百科似乎没有达成共识)。以下是C#表达式的表达式树的根节点是什么?(string s) => s.Length 表达式树如下所示,其中“->”表示节点的属性名称,可以通过其他节点访问该属性。 ->Pa...

27得票3回答
序列化表达式树

我正在使用C#开发分布式系统,遇到了一个障碍。 我需要能够序列化具有类型的Predicate。Predicate<ICollection<IEntity>> p = (entities => entities.OfType<Person>().Cou...

27得票7回答
缓存编译的表达式树

如何高效地缓存从表达式树编译的方法? public void SomeToStringCalls() { ToString(i => (i + 1).ToString(), 1); ToString(i => (i + 1).ToString(), 2); ...

26得票6回答
如何获取使用局部变量的ConstantExpression的值?

我创建了一个ExpressionVisitor实现,并覆盖了VisitConstant方法。然而,当我创建一个利用本地变量的表达式时,似乎无法获取实际的变量值。public class Person { public string FirstName { get; set; } } st...

26得票2回答
C#编译器bug?在表达式中使用对象初始化语法写入只读属性会导致csc崩溃。

虽然您可能认为这是一个缺陷报告,但我很好奇是否我在这里非常错误,或者是否有来自Eric或Microsoft的其他人的解释。 更新 现在已经在Microsoft Connect上发布了一个bug。 描述 考虑以下类:class A { public object B { ...

26得票3回答
如何在表达式树方法中指定要返回的对象?

我正在尝试使用表达式树创建一个返回对象的方法,但我无法确定如何指定要返回的对象。我已经阅读了这篇文章,但似乎没有实际指定返回值的地方。 我已经完成了所有的赋值和其他操作,但是如何从使用表达式树创建的方法中指定要返回的对象呢? 编辑:这些是 v4 表达式树,我正在尝试创建的方法类似于这样:p...

26得票2回答
LinqKit的扩展器为什么不能获取来自字段的表达式?

我正在使用LinqKit库,该库允许即时组合表达式。 对于编写Entity Framework数据访问层来说,这是一种纯粹的幸福,因为可以选择重复使用和组合多个表达式,从而实现既可读又高效的代码。 考虑以下代码片段:private static readonly Expression&lt...

26得票1回答
如何使用多个条件构建Lambda表达式树

注意:我知道使用动态LINQ更简单,但我想学习。 我想创建一个lambda表达式,用于查找 Name=David 且 Age=10。 class Person { public int Age { get; set; } public string Na...

26得票3回答
如何封装Entity Framework以在执行前拦截LINQ表达式?

我想在执行之前重写LINQ表达式的某些部分。但是我在将我的重写器注入到正确位置时遇到了问题(实际上是完全无法注入)。 查看Entity Framework源代码(使用reflector),最终涉及到IQueryProvider.Execute,在EF中由ObjectContext通过提供in...

26得票5回答
表达式树的性能

我的当前理解是,像这样的“硬编码”代码:public int Add(int x, int y) {return x + y;} 将始终比像这样的表达式树代码更快:Expression<Func<int, int, int>> add = (x, y) => x ...