1

我有一些数据存储在我的 domainContext 的 EntitySet 中,我想从中选择其中的一部分。问题是我得到了所有的 CageNames - 而不仅仅是日期最高的“新”。

这是数据:

SiteId CageId CageName Date
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

4

2 回答 2

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()
于 2011-05-06T09:05:51.657 回答
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()
于 2011-05-05T14:17:49.653 回答