我有一些数据存储在我的domainContext的EntitySet中,我想在其中选择部分数据。问题是我得到了所有的CageNames - 而不仅仅是具有最高日期的“新”CageNames。
这是数据:
SiteId CageId CageName日期
1,1,Lot1,'2011-05-05'
1,1,LotNew,'2011-05-06'
1,2,Lot1,'2011-05-05'
1,2,LotNew,'2011-05-06'
1,3,Lot1,'2011-05-05'
1,3,LotNew,'2011-05-06'
因此,对于列出的每个CageId,我想在具有最高日期的记录上返回CageName。 我的代码试图这样做:
Dim CageName As Array
CageName = DomainContext.SiteCageDatas.Where(Function(h) h.SiteId = SiteId) _
.Select(Function(x) x.CageName).Distinct.ToArray()
但这只是给了我所有的CageNames ..任何想法我应该如何解决这个问题,我想也许可以使用groupby或者什么? 心神;我正在使用VB.NET
答案 0 :(得分:1)
试试这个:
DomainContext.SiteCageDatas.GroupBy(Function(x) x.CageId).Select(Function(x) x.OrderBy(Function(x) x.Date).LastOrDefault()).Where(Function(x) x IsNot Nothing).Select(Function(x) x.CageName).ToArray()
答案 1 :(得分:1)
我现在正在这样做,但什么也没有回复:(
CageName = DomainContext.SiteCageDatas.GroupBy(Function(a) New With {a.SiteId, a.CageId}).Select(Function(a) a.OrderBy(Function(b) b.Date).LastOrDefault()).Where(Function(x) x.SiteId = SiteId).Select(Function(x) x.CageName).ToArray()