【问题标题】:OrderBy & OrderByDescending DateTime In Generic Repository?通用存储库中的 OrderBy 和 OrderByDescending 日期时间?
【发布时间】:2015-02-12 15:20:19
【问题描述】:

在我的解决方案中,创建通用存储库

     public abstract class GenericRepository<C,T> : Repo.IGenericRepository<T>
      where T : class
      where C : DbContext, new(){
       private C _entities = new C();
       public C Context
       {
           get { return _entities; }
           set { _entities = value; }
       }

       public virtual IQueryable<T> GetAll(
        Expression<Func<T,object>> predicate,
        Sorted _sort = Sorted.ASC,
        int _max = 0,
        int _skip = 0
        ) {
            IQueryable<T> query = _sort == Sorted.ASC ? //Sorted is enum
                _entities.Set<T>().OrderBy(predicate).Skip(_skip).Take(_max) :
                _entities.Set<T>().OrderByDescending(predicate).Skip(_skip).Take(_max);

            return query;
       }
    } 

然后打电话

var db = new JobRepository();
db.GetAll(e=>e.jcudate, sort, a, b).ToList();

错误:

无法将类型“System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]”转换为类型“System.Object”。 LINQ to Entities 仅支持转换 EDM 基元或枚举类型。

但是,如果使用

WSCEntities dbs = new WSCEntities();
dbs.jobservs.OrderBy(e=>e.jcudate).Skip(b).Take(a).ToList();

完全没有问题..,请建议我应该如何解决这个问题?

【问题讨论】:

    标签: c# datetime repository entity-framework-6


    【解决方案1】:

    尝试在Expression&lt;Func&gt; 上使用Func 委托

    public virtual IQueryable<T> GetAll(
            Func<T,object> predicate,
            Sorted _sort = Sorted.ASC,
            int _max = 0,
            int _skip = 0
            ) {
                IQueryable<T> query = _sort == Sorted.ASC ? //Sorted is enum
                    _entities.Set<T>().OrderBy(predicate).Skip(_skip).Take(_max) :
                    _entities.Set<T>().OrderByDescending(predicate).Skip(_skip).Take(_max);
    
                return query;
           }
    

    更多请查看msdn documentationOrderBy 方法。

    【讨论】:

    • 感谢@JenishRabadiya 的建议。并将 IQueryable 替换为 IEnumerable
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    相关资源
    最近更新 更多