首页 > TAG信息列表 > expression-trees

c#-计算具有很多参数的表达式树

我正在尝试使用.Net 3.5中的表达式树和Lamdba表达式对象,以允许我动态计算用户输入的布尔表达式. 到目前为止,用户可以创建由BinarayExpressions组成的表达式树,其AND和OR值表示为ParameterExpressions.然后,我计划基于该树创建LambdaExpression,以便可以将表达式编译成一个我可以

表达式树参数是否需要重用同一实例?

我正在使用反射树和表达式树的组合,并希望将某些属性访问器从类传递回调用方法.我当前的代码中有一个遍历类并返回MemberExpressions列表的方法.然后,调用者遍历成员表达式并创建lambda,然后应使用被检查类的实例来调用该lambda以返回属性的值. 这是不使用方法调用的样例(在LINQPad

CodeGo.net>如何在对象的表达式中分配一个表达式?

这将非常简单. public class ModelMapNode { } public class ModelMapNode<TModelMap> : ModelMapNode { } public class ModelMapView { } public class ModelMapView<TModelMap> : ModelMapView where TModelMap : ModelMapNode { public ModelMapView()

c#-记忆表达式的最快方法

我有一个函数,将输入Expression转换为Output BlockExpression.所以我写这段代码: private static readonly Dictionary<Expression, BlockExpression> MemberMemoizeDictionary = new Dictionary<Expression, BlockExpression>(); private static BlockExpression CreateB

如何使用表达式树对数字类型应用隐式转换?

我有一个带有int字段的ExpandoObject,我想使用表达式树将其转换为十进制. 这是我正在使用的方法: private static Expression<Func<dynamic, decimal>> CreateLambdaCastExpression() { // source var sourceParameterExpression = Expression.Parameter(typeo

穷举搜索/生成表达式树的每个组合

我正在使用基本的表达式树优化器来构建查询计划.解析树时,我可以决定如何“最佳”构建它,这取决于可以分配给每个操作的权重. 如果我有一棵简单的树,并且有两种关于如何执行动作的选择,我希望能够生成树的两个变体,然后可以比较每个树的权重以查看最有效的树. 例如,下面的代码将允

c#-使用表达式树设置字段值

我需要为一个类中的所有字段创建一个表达式. 因此,我已根据需要采用了this post: public static void Sample() { var setters = GetFieldSetterExpressions<Account>(); var myAccount = new Account(); setters["AccounHolder"](myAccount, "Giovanni"); sette

将C#函数移动到表达式以在Entity Framework / SQL Select中使用

我有一些小的C#函数,并从视图中计算了cols,然后将它们移至“表达式”,以便它们直接针对本机T / SQL中的数据源执行. 我可以在Select中内联执行此操作,但我想将其移至通用功能以进行重用和测试. var results = context .Products .Select(p => new StockDto {

首页> C#>动态Linq的where子句抛出OutOfMemoryException

我是Linq的新手,并且是使用表达式树的真正初学者. 我有一个通用的表达式例程,可构建一个简单的Linq where子句,该子句在以下位置找到: https://www.simple-talk.com/dotnet/net-framework/dynamic-linq-queries-with-expression-trees/ public Func<TSource,bool> SimpleFilter<TSo

表达式树创建字典与类的属性值

本质上,我正在尝试使用表达式树来执行此操作 var properties = new Dictionary<string, object>(); foreach (var propInfo in objType.GetTypeInfo().GetProperties(BindingFlags.Public)) { var name = propInfo.Name; var value = propInfo.GetValue(objInstance);

C#-表达式树-替代表达式

考虑两个表达式树: Expression<Func<float, float, float>> f1 = (x, y) => x + y; Expression<Func<float, float>> f2 = x => x * x; 我想将表达式f2替换为f1的第二个参数,并获得以下表达式: Expression<Func<float, float, float>> f3 = (x, y) => x + y

C#-ICollection列的动态Lambda表达式

我正在尝试生成动态Lambda表达式以过滤ICollection字段.在Linq中,它看起来像这样: .Where(x => x.Remarks.Any(s => s.Remark.Description.Contains(“ filter”)))) 我已经完成了最后一部分:s => (s.Remark.Description.Contains(“ filter”)) MethodInfo containsMethod = typeof

CodeGo.net>我如何建立一个Linq表达式树与一个通用对象比较?

我有一个IQueryable和一个T类型的对象. 我想做IQueryable().在哪里(o => o.GetProperty(fieldName)== objectOfTypeT.GetProperty(fieldName)) 所以… public IQueryable<T> DoWork<T>(string fieldName) where T : EntityObject { ... T objectOfTypeT = ...; .

标签:Expression.AddChecked和System.Int16

给出两条短裤(System.Int16) short left = short.MaxValue; short right = 1; 添加它们时,我想获取一个OverflowException. checked(left+right) 不起作用,因为从左到右的结果是一个Int32. checked((short)(left+right)) 如预期般运作. 我的问题是,使用表达式树,“把戏”不起

使用表达式树的动态Linq 2 Sql引发异常“小于未为System.String和System.String定义的二进制运算符”

我正在尝试使用表达式树编写一个动态的Linq 2 Sql查询,但是我遇到一个异常,告诉我未为System.String和System.String定义LessThan和GreaterThan运算符,我觉得很奇怪,这是真的?还是我做错了什么? Expression<Func<SomeDataContextType, string>> codeSelectorExpresion = x => x

表达式树的转换问题

我有上一个SO问题的表达式树函数.它基本上允许将数据行转换为特定的类. 除非您要处理的数据类型可以更大或更小(例如Int32 / Int64),否则这段代码可以正常工作. 当从Int64到Int32的值适合Int32时,代码将引发无效的强制转换异常(例如3000中的数字). 我是不是该? >尝试在代码中解决此

我如何创建一个动态表达式,如(x,y)=> DateTime.Compare(y.EFFECTIVE_DATE,x.EFFECTIVE_DATE)

我是较新的编码器,使用表达式树动态创建以下lamdba表达式时遇到很多问题. ( x, y ) => DateTime.Compare( y.EFFECTIVE_DATE, x.EFFECTIVE_DATE ) 我才刚刚开始理解表达式树的基础知识,但似乎还不了解创建它的知识.我没有什么好代码要放在这里,因为说实话,我真的很糊涂.任何帮助

CodeGo.net>如何扩展lambda表达式参数中的谓词

我想在我的方法中扩展expression参数以添加自己的过滤器.我正在尝试执行以下操作,但是语法错误: public static IList<MyPage> DoSomething<T>(Expression<Func<T, bool>> predicate) { return DataStore().GetPages().Where(p => p.PublishDate < DateTime.Now && predi

表达式树库和枚举之间的关系

在C#中,我可以使用任何关系运算符成功比较枚举值,如下所示: var res = SomeEnumType.First < SomeEnumType.Second 在尝试使用表达式库完成相同操作时: var arg1 = Expression.Constant(SomeEnumType.First); var arg2 = Expression.Constant(SomeEnumType.Second); var res = E

CodeGo.net>如何从IQueryable获取where子句定义为接口

class Program { static void Main(string[] args) { var c = new SampleClass<ClassString>(); c.ClassStrings.Add(new ClassString{ Name1 = "1", Name2 = "1"}); c.ClassStrings.Add(new ClassString{ Name1

c#-动态创建一个选择对象属性的表达式

我希望能够动态构建一个表达式,它本质上是一个属性选择器. 我正在尝试使用它,以便提供灵活的搜索UI,然后将所选的搜索参数转换为Entity Framework查询. 由于使用了另一个库,因此我有了大部分所需的资源,但是缺少最后一部分,该部分将我的查询字符串参数转换为另一个库所需的适当的表

c#-动态构建表达式树

我正在追踪这个出色的例子:Convert Linq to Sql Expression to Expression Tree 在我的情况下,我试图构建一个表达式树,其中要过滤的类型仅在运行时才知道,并表示为字符串.在上面的示例中,Region类型已经为人所知,可以直接输入: ParameterExpression pe = Expression.Parameter(type

CodeGo.net>如何创建表达式树,返回基于约定的受限属性?

我需要创建一个表达式树,返回Expression< Func< TDataStructure,Double []>表达.棘手的是,TDataStructure是通用的,这意味着每个传递的类都包含不同的属性集.我需要获取Double类型的属性吗?以及以特定字符串开头的名称,例如“输出”. 简单示例案例(具体类): Expression<Func<Concret

c#-Expression.Call类型System.Collections.Generic.ICollection不存在方法“选择”

我正在运行时为实体框架构建表达式,并且已经解决了所有问题,除了从子ICollection中选择属性外. 发布我的整个框架很困难,但这是我尝试过的. var param = Expression.Parameter(typeof(TEntity), "w"); Expression.Property(entity, propertyName); w.Roles var param = Express

为什么在Expression.Call上编译的lambda编译比应该做的委托慢一些?

为什么在Expression.Call上编译的lambda构建比应该执行相同操作的委托慢一些?以及如何避免呢? 解释BenchmarkDotNet结果. 我们正在比较CallBuildedReal和CallLambda;其他两个CallBuilded和CallLambdaConst是CallLambda的“子表单”,并显示相等的数字.但是与CallBuildedReal的区别是很