分组依据并获取 asp.net mvc 中的类对象的 1
本文关键字:mvc 对象 net asp 获取 | 更新日期: 2023-09-27 18:18:07
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 网格的代码。我将在 DB
CS.pols
表中的数据库中有 2 个或更多条目。我想按PolID
分组,因为只有此字段在各个版本中保持不变。我想group by
它并take 1
.我收到一个错误,说无法将IQueryAble
转换为ProBE
。请帮助我如何获得所需的数据。
您的第一个问题,因为您最后正在执行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
});