2
我有一个与用户相关的项目列表。获取订单组的最后一项
每个项目都有一个日期。
我想每个用户
例如的最后一个项目(按日期),如果数据是:
Id1, User1, 1.1.16
Id2, User2, 2.1.16
Id1, User1, 4.1.16
Id4, User2, 3.1.16
Id3, User1, 2.1.16
Id4, User2, 5.1.16
应该每个用户的返回的最后一个项目(按日期) :
Id1 User1 4.1.16
Id4 User2 5.1.16
我的查询是:
from sf in db.Items
where ...
group i by i.UserId into g
select g.OrderByDescending(s => s.StartDate).FirstOrDefault();
出于某种原因,一直得到用户的第一个项目。
当我打印所有的组和他们的项目时,它看起来很好,并且第一项是每个组中的最后一项,但是查询不会返回它。
我试图改变g.OrderBy
..didn't帮助
也尝试添加g.ToList()
...
我怎样才能得到每个用户的最新项目?
如果即时通讯改变查询
它工作... 通过i.UserId组i成克
选择g.OrderByDescending(S => s.StartDate)
和比当我循环的组我取第一项
foreach(查询中的变量)
{
var last = g.First();
不幸的是,我得到了同样的结果。只有当我选择整个组,并且当我循环选择第一组时,它才会打开。 foreach(var gr in resultQuesry)var last = gr.First(); –