public static IQueryable<ProBE> GetAllPol()
{
ConnectionString CS = new ConnectionString();
var pol = (from pol in CS.pols
select new ProBE
{
Id = pol.Id,
Name = pol.Name,
Weight = pol.Weight,
EnID = pol.EnID,
PolID = pol.PolID
}).GroupBy(c=>c.PolID).Take(1);
return pol;
}
以上是我的代码,它与Devexpress网格绑定。我将在CS.pols
的{{1}}表中的数据库中有两个或更多条目。我希望按DB
进行分组,因为只有此字段在不同版本中保持相同。我想PolID
和group by
。我收到错误消息,指出无法将take 1
转换为IQueryAble
。请帮助我如何获得所需的数据。
答案 0 :(得分:1)
您的第一个问题,因为您最后会GroupBy
,它将返回IEnumerable<IGrouping<T>>
,以便永远不会转换为IQueryable<ProBE>
。因此,您需要先将其分组,然后再进行投影。
下一个问题是Take
,它会返回IEumerable<T>
,但您只需要分组后的第一个项目,所以请改用FirstOrDefault
: -
var pol = (from pol in CS.pols
group pol by pol.PolID into g
let firstgroupedPol = g.OrderByDescending(x => x.Id).FirstOrDefault()
select new ProBE
{
Id = firstgroupedPol != null ? firstgroupedPol.Id : 0,
Name = firstgroupedPol != null ? firstgroupedPol.Name : "",
//similarily others
PolID = g.Key
});