Csharp/C#教程:表达树和可空类型分享


表达树和可空类型

我一直在玩表情树。 我有以下简单方法,通过动态创建表达式树来执行查询。 ItemType是数据库中的可空int, 也是EF实体类中的可空int。 出于某种原因虽然查询引发了错误

未处理的exception:System.InvalidOperationException:没有为类型’System.Nullable`1 [System.Int32]’和’System.Int32’定义二进制运算符Equal。

我不认为我要求EF转换任何东西。 我的参数定义为int? ,这是我认为它应该是。

注意,我看过这个

在表达式树中使用可空类型

但是这个家伙试图传入他的可以作为对象输入的可以为空的int值,我猜这个EF有问题。 我实际上是从头开始宣布这是正确的类型。

  public void GetResultCollection() { MyEntities db = new MyEntities(); var result = db.CreateQuery(String.Format("[{0}]", typeof(T).Name + "s")); int? ItemTypeValue = 1; var param = Expression.Parameter(typeof(T)); var lambda = Expression.Lambda<Func>( Expression.Equal( Expression.Property(param, "ItemType"), Expression.Constant(ItemTypeValue)), param); var list = result.Where(lambda).ToList(); } 

编辑

我也尝试了ItemTypeValue.Value – 同样的错误

我想你需要转换它

上述就是C#学习教程:表达树和可空类型分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var right = Expression.Constant(ItemTypeValue , typeof(int?)) .... var lambda = Expression.Lambda>( Expression.Equal( Expression.Property(param, "ItemType"), right), param); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/990109.html

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐