1

我目前对每个“FileStreamID”都有多个记录,但我只想根据最新的“请求日期”获得一个不同的记录

这是我现在拥有的:

 var resultx = from v in ctx.vEmailSents
                             where v.Lab_ID == 44
                                 && v.UploadDate >= this.BeginDate
                             select new
                             {

                                 FileStreamID = v.FileStream_ID,
                                 UploadDate = v.UploadDate,
                                 RequestDate = v.DateSent,
                                 TypeDesc = v.TypeDesc
                             };

现在我得到大约 33 条记录(但我应该只得到 12 条)

我如何将其更改为仅在文件流 ID 上给我不同的行?

4

2 回答 2

4

将您的vEmailSent对象分组FileStream_ID并从每个组项中选择最新日期:

 var resultx = from v in ctx.vEmailSents
               where v.Lab_ID == 44
                     && v.UploadDate >= this.BeginDate
               group v by v.FileStream_ID into g
               select g.OrderByDescending(x => x.DateSent)
                       .FirstOrDefault() into lastV
               select new {
                      FileStreamID = lastV.FileStream_ID,
                      UploadDate = lastV.UploadDate,
                      RequestDate = lastV.DateSent,
                      TypeDesc = lastV.TypeDesc                          
               };
于 2012-12-21T15:51:03.453 回答
0
var results = resultx
    .GroupBy(x => x.FileStreamID)
    .Select(g => g.OrderByDescending(x => x.RequestDate).First());
于 2012-12-21T15:52:10.733 回答