我目前有每个“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上为我提供不同的行?
答案 0 :(得分: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
};
答案 1 :(得分:0)
var results = resultx
.GroupBy(x => x.FileStreamID)
.Select(g => g.OrderByDescending(x => x.RequestDate).First());