将var转换为ClassTracker IQueryable类类型

本文关键字:IQueryable 类型 ClassTracker var 转换 | 更新日期: 2023-09-27 18:02:17

var q = from n in CS.trackers
group n by n.Id into g
select g.OrderByDescending(t => t.DateTime).Take(1);

上面的代码给出了所需的结果,它根据日期时间获取Id的最新记录。但是当我试着把它转换成class让它转换成IQueryAble

List<ClassTracker> o = (from h in q
select new ClassTracker{
Id = 
}
)

当我做Id = q时,我没有得到qid。我想将其转换为一种类型的ClassTracker,以便我可以使用。asqueryable将其转换为IQueryable<ClassTracker>

将var转换为ClassTracker IQueryable类类型

您在第二次查询中没有获得Id = q,因为您的第一次查询没有返回IEnumerable<T>,而是返回IEnumerable<IEnumerable<T>>,因此在第二次查询中您必须这样做SelectMany:-

List<ClassTracker> o = (from h in q
                        from t in h
                        select new ClassTracker
                                              {
                                                  Id = t.Id,
                                                  //Other properties here
                                              }
                       ).ToList();

但是对我来说,你可以在一个查询中完成所有这些,像这样:-

IQueryable<ClassTracker> result = (from n in CS.trackers
                     group n by n.Id into g
                     let firstObj = g.OrderByDescending(t => t.DateTime).First()
                     select new ClassTracker
                     {
                         Id = firstObj .Id,
                         //Other properties here
                     }).AsQueryable<ClassTracker>();