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数据库对象。
为什么要转换呢,直接Max()就应该可以啊。
你应该是想生成select max(ID) from Table1这样的Sql了,这个语句DbSet<Table1>.Select(t=>t.ID).Max()
是的,你说的没错,不过我需要的列是不确定的,是客户端传过来的,可能是ID也可能是其它的列,并且这个列的类型不一定是int类型,而我也需要已int类型的方式获取最大值。
@牟珏玘: 我还是不太理解,你要是为了生成这样的Sql语句,那么这个可以对应任意列啊,除非你不是为了这个Sql,还有其他运算。