使用IQueryable;不工作

本文关键字:工作 IQueryable 使用 | 更新日期: 2023-09-27 18:09:47

我使用的是linq-to-EF,然后是:

public IQeuryable<base01> GetData()
{
   var u = this.ObjectContext.base01;
   IQueryable<base01> u2 = u.OrderBy(o => o.article)
           .Select(l => new { Id = l.Id, article = l.article, lot = l.lot}) as IQueryable<base01>;
   return u2;
}

基本上,u包含查询的结果,我希望对列进行排序和重新排列。当我用return u替换return u2时,我得到了结果集填充的内容但是当我用return u2时,我得到了一个空

我没看到的问题是什么?

谢谢。

使用IQueryable;不工作

as IQueryable<base01>

问题是as -您在查询中投射到匿名类型而不是base01 -因此as将返回null。相反,在投影中创建base01的新实例并删除as操作符:

IQueryable<base01> u2 = u.OrderBy(o => o.article)
                         .Select(l => new base01()
                          { Id = l.Id, article = l.article, lot = l.lot });
编辑:

如果u已经是一个IQueryable<base01>并且base01是你的实体之一,你根本不需要Select()投影,因为你已经有了你想要的类型:

IQueryable<base01> u2 = u.OrderBy(o => o.article);
return u2;

不能这样强制转换,请使用下面的代码。

IQueryable<base01> u2 = u.OrderBy(o => o.article) 
       .Select(l => new base01 { Id = l.Id, article = l.article, lot = l.lot});