分组依据并获取 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。请帮助我如何获得所需的数据。

分组依据并获取 asp.net mvc 中的类对象的 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
                 });