标签: iorderedqueryable

无法将IQueryable <>转换为IOrderedQueryable错误

我有以下LINQ代码:

    var posts = (from p in db.Posts
         .Include("Site")
         .Include("PostStatus")
        where p.Public == false
        orderby p.PublicationTime 
        select p);

        if (!chkShowIgnored.Checked) {
            posts = posts.Where(p => p.PostStatus.Id != 90);
        }
Run Code Online (Sandbox Code Playgroud)

最后一行(额外的地方)给了我错误:

无法将类型'System.Linq.IQueryable'隐式转换为'System.Linq.IOrderedQueryable'.

我不确定这意味着什么......
为什么我会收到这个错误?
一旦我将"orderby"子句添加到查询中,它之前就编译好了,所以我对所发生的事情有一种预感,但我无法完全理解它.

c# iqueryable type-conversion linq-to-sql iorderedqueryable

13
推荐指数
1
解决办法
1万
查看次数

动态Func <IQueryable <TEntity>,IOrderedQueryable <TEntity >>表达式

我正在使用这里提到的模式 http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in- AN-ASP净MVC应用程序

我正在使用下面的方法来查询EF

public virtual IEnumerable<TEntity> Get(
        Expression<Func<TEntity, bool>> filter = null,
        Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
        string includeProperties = "")
    {
        IQueryable<TEntity> query = dbSet;

        if (filter != null)
        {
            query = query.Where(filter);
        }

        foreach (var includeProperty in includeProperties.Split
            (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
        {
            query = query.Include(includeProperty);
        }

        if (orderBy != null)
        {
            return orderBy(query).ToList();
        }
        else
        {
            return query.ToList();
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我想创建动态Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>>表达式来订购我的数据.

我只知道字段名称为字符串和顺序类型(升序,降序)为字符串(asc,desc)

c# iqueryable linq-expressions iorderedqueryable

6
推荐指数
2
解决办法
8663
查看次数