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。我没有得到q.Id.我想将它转换为ClassTracker类型,以便我可以使用.AsQueryAble将其转换为IQueryable<ClassTracker>
答案 0 :(得分:0)
您的第二个查询未收到Id = q
,因为您的第一个查询没有退回IEnumerable<T>
而是返回IEnumerable<IEnumerable<T>>
所以在您的第二个查询中您必须执行SelectMany
1}}像这样: -
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>();