与IQueryable合作;不工作

时间:2011-09-24 16:22:57

标签: c# linq

我正在使用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。

我没有看到什么问题?

感谢。

2 个答案:

答案 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});