我正在使用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;
}
基本上,你包含查询的结果,我正在寻找排序和重新排列列。当我用return返回u2时,我得到了结果集,但是当我返回u2时,我得到一个null。
我没有看到什么问题?
感谢。
答案 0 :(得分:3)
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;
答案 1 :(得分:0)
你不能这样投,使用下面的代码。
IQueryable<base01> u2 = u.OrderBy(o => o.article)
.Select(l => new base01 { Id = l.Id, article = l.article, lot = l.lot});