Tag: 表达

在Expression.Block中查找和删除参数声明

我知道如何用ExpressionVisitor替换参数,但我想知道是否有办法从Expression.Block中删除参数。 理想情况下,我应该抓取整个表达式树,并在每次在块内声明时删除参数。 知道如何用ExpressionVisitor做到这一点吗?

将字符串转换为Linq.Expressions或使用字符串作为Selector?

好吧,我现在有一个字符串,它具有要评估的表达式值。它具有值expr => expr.FieldName …所以我想将此字符串用作Linq。 表达式或任何其他查询方式…如Select(str) 。 请帮帮我。

为什么我不能在变量中捕获FakeItEasy期望值?

我正在使用FakeItEasy伪造一些entity framework调用,以确保正确映射一堆奇怪的遗留数据库表。 我需要断言具有与特定DeliveryAddress匹配的Invoice的Customer正被添加到数据库中。 如果我这样做: A.CallTo(() => db.Customers.Add( A.That.Matches( c => c.Invoices.First().Address == EXPECTED_ADDRESS) ) )).MustHaveHappened(); 代码完美无缺。 我想通过在其他地方移动期望来简化语法,但是当我这样做时: var expected = A.That.Matches( c => c.Invoices.First().Address == EXPECTED_ADDRESS) ); A.CallTo(() => db.Customers.Add(expected)).MustHaveHappened(); 测试失败。 FakeItEasy代码中发生了什么,这意味着期望表达式在内联时有效,但无法在变量中捕获并在以后重用?

Expression.Compile在Monotouch上做了什么?

因此Expression.Compile执行以下操作 将表达式树描述的lambda表达式编译为可执行代码,并生成表示lambda表达式的委托。 它可以在Portable Class Libraries中找到。 但是,当通过Monotouch运行.net时, 不支持动态代码生成 由于iPhone的内核阻止应用程序动态生成代码,因此iPhone上的Mono不支持任何forms的动态代码生成。 所以基于IOS的Xamarin不能支持Expression.Compile。 那么当您在IOS上调用Expression.Compile Xamarin时会发生什么? 它是抛出还是exception,如果有的话是什么exception? 它是否记录在任何地方?

没有为类型’System.Int32’和’System.Double’定义二元运算符Multiply。

为什么以下代码在运行时抛出exception,而以传统方式执行它会编译没有问题? var left = Expression.Constant(25d); var right = Expression.Constant(20); // Throws an InvalidOperationException! var multiplyExpression = Expression.Multiply(left, right); var multiply = 25d * 20; Debug.WriteLine(multiply.ToString()); // Works normally! 我不会使用Expression.Convert因为我无法准确确定应该转换哪个表达式。

如何在C#中的运行时以字符串格式计算布尔表达式的结果?

让我们说我从文件中读取了这个条件: Condition = “Person.Value.Status == 9” 如果“Person”是我的代码中的类,如何在运行时检查此条件是否为真?

表达树有用的实例是什么?

我完全理解表达式树的概念,但我很难找到它们有用的情况。 是否有可以应用表达式树的特定实例? 或者它仅作为代码的传输机制有用? 我觉得我在这里错过了一些东西。 谢谢!

将表达式<Func >转换为Expression <Func >

我有以下表达式,其类型为Expression<Func> x => x.Name 现在,我不知道编译时x.Name的类型,但我现在它在运行时,因为它存储在一个Type 。 如何将表达式转换为Expression<Func> Type ,其中TOutput是一个Type而在编译时不知道?

将两个表达式组合成一个管道

我们假设我有以下两种表达方式: Expression<Func<T, IEnumerable>> collectionSelector; Expression<Func<IEnumerable, TNested>> elementSelector; 有没有办法“组合”这些以形成以下:(?) Expression<Func> selector; 编辑: 性能非常关键,因此如果可能的话,我会非常感谢能够以极少的开销实现最佳解决方案。 非常感谢!

C#Linq OrderBy过滤null或空值为last

我尝试使用自定义orderby扩展方法,我成功地处理了我的代码,但另外我想在结果中列出null或空值或零值,任何人都可以帮我解决这个问题? 这是我对orderby的扩展方法 public static IQueryable OrderBy(this IQueryable q, string SortField, bool isAsc) { //var nullExpr = Expression.Constant(null, typeof(T)); var param = Expression.Parameter(typeof(T), “p”); var prop = Expression.Property(param, SortField); var exp = Expression.Lambda(prop, param); string method = isAsc ? “OrderBy” : “OrderByDescending”; Type[] types = new Type[] { q.ElementType, exp.Body.Type }; var mce = Expression.Call(typeof(Queryable), method, […]