Pol*_*dar 4 c# expression entity-framework
我正在使用EntityFramework Code First Generic Repository.我有一个过滤方法.此方法也进行分页和排序.方法如下
public IQueryable<TEntity> Filter(Expression<Func<TEntity, bool>> filter, out int total, Expression<Func<TEntity, object>> sorting, SortType sortDirection, int index = 1, int size = 30)
{
index = index - 1;
int skipcount = index * size;
IQueryable<TEntity> resetSet = filter != null ? Entities.Where(filter) : Entities.AsQueryable();
total = Entities.Where(filter).Count();
if (sortDirection == SortType.Desc)
{
resetSet = skipcount == 0 ?
resetSet.Where(filter).OrderByDescending(sorting).Skip(0).Take(size) :
resetSet.Where(filter).OrderByDescending(sorting).Skip(skipcount).Take(size);
}
else
{
resetSet = skipcount == 0 ?
resetSet.Where(filter).OrderBy(sorting).Skip(0).Take(size) :
resetSet.Where(filter).OrderBy(sorting).Skip(skipcount).Take(size);
}
return resetSet.AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)
排序类型是Expression<Func<TEntity, object>>如果我传递此参数作为Expression<Func<TEntity, object>>获取异常无效铸造int到对象但Expression<Func<TEntity, string>>吐出任何异常..
任何想法谢谢
排序类型是
Expression<Func<TEntity, object>>如果我传递此参数作为Expression<Func<TEntity, object>>获取异常无效铸造int到对象但Expression<Func<TEntity, string>>吐出任何异常..
那是因为int是一个值类型,string而是一个引用类型.一个int被装箱的需求转换为object和LINQ的ExpressionAPI不会自动做.生成表达式时,如果返回表达式,则int需要Expression.Convert(<expr>, typeof(object))在返回表达式之前添加表达式.
| 归档时间: |
|
| 查看次数: |
1075 次 |
| 最近记录: |