我有一个包含4个字段的数据库,看起来像这样:
ID DeviceId Location Date
1 A ... 2
2 A ... 1
3 B ... 2
对于每个DeviceId
,我想要最高日期记录中的位置。我可以按以下方式获取不同的DeviceId
:
// get all locations
var locations = Session.Query<Location>().ToList();
//Get the latest used unique deviceId's
var distinctDeviceIdsByDate = (
from loc in locations
orderby loc.DeviceId, loc.Date descending
select loc.DeviceId).Distinct().ToList();
我会使用join来获取所需的行,但这没有任何用处,因为我除了DeviceId
之外什么都得不到,因此无法确定要选择哪些行。如果我尝试选择以下内容:
select loc
我只能获取每一列的唯一组合行。我相信有一个简单的解决方案,但是现在我无法想出来。