使用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时,我得到了一个空
我没看到的问题是什么?
谢谢。
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});