将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>
您在第二次查询中没有获得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>();