首页 新闻 会员 周边

动态生成Lambda表达式关于类型转换的问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-09-02 16:35
  IQueryable<DataInfo> custs = db.DataInfo;
  ParameterExpression param = Expression.Parameter(typeof(DataInfo), "c");
  Expression selector = Expression.Property(param, typeof(DataInfo).GetProperty("Col"));
  Expression<Func<DataInfo, int>> m = Expression.Lambda<Func<DataInfo, int>>(selector, param);
  var a = custs.Max(m);

其中Col为数据库中类型为string的字段,我需要获得它int类型的情况下的最大值,现求怎样能在不修改数据库的前提下把Col列的string类型转换成int类型然后获得最大值。

注:db.DataInfo为EF数据库对象。

牟珏玘的主页 牟珏玘 | 初学一级 | 园豆:172
提问于:2013-07-09 16:38
< >
分享
最佳答案
0

为什么要转换呢,直接Max()就应该可以啊。

你应该是想生成select max(ID) from Table1这样的Sql了,这个语句DbSet<Table1>.Select(t=>t.ID).Max()

收获园豆:10
kylin.chen | 小虾三级 |园豆:983 | 2013-07-10 22:41

是的,你说的没错,不过我需要的列是不确定的,是客户端传过来的,可能是ID也可能是其它的列,并且这个列的类型不一定是int类型,而我也需要已int类型的方式获取最大值。

牟珏玘 | 园豆:172 (初学一级) | 2013-07-11 07:54

@牟珏玘: 我还是不太理解,你要是为了生成这样的Sql语句,那么这个可以对应任意列啊,除非你不是为了这个Sql,还有其他运算。

kylin.chen | 园豆:983 (小虾三级) | 2013-07-11 12:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册