如您所见,PipelineJobStatus是一个聚合 - 有两个键,第一个键可以重复:
PipelineID | JobSTatusID
6 | 3
6 | 6
6 | 8
7 | 1
7 | 2
8 | 9
我想要显示完全相同的视图(合并),但是使用最新的CreatedDateTime for Distinct值。 我的linq:
private IQueryable<StatusPipelineMerge> wholeResults()
{
var query2 = (
from pjs in db.PipelineJobStatus
from pipe in db.Pipelines
.Where(pipe => pipe.PipelineID == pjs.PipelineID).DefaultIfEmpty()
from status in db.JobStatus
.Where(statuses => statuses.JobStatusID == pjs.JobStatusID).DefaultIfEmpty()
from fco in db.FCOes
.Where(fcoes => fcoes.FCOID == pipe.FCOID)
from client in db.Clients
.Where(clients => clients.ClientID == pipe.ClientID)
group new { pipe.CreatedTimeStamp }
by new
{
status.JobStatusName,
pipe.PipelineID,
pipe.ClientID,
client.ClientName,
fco.NameFCO,
fco.FCOID,
pipe.Employee.Name,
pipe.Employee.Surname,
pipe.CommentPipeline,
pipe.CreatedBy,
pipe.CreatedTimeStamp,
pipe.ModifiedTimeStamp,
pipe.ProjectValueHr,
pipe.ProjectValueMoney
} into g
orderby g.Key.PipelineID ascending
select new StatusPipelineMerge
{
PipelineID = g.Key.PipelineID
,
ProjectValueHr = g.Key.ProjectValueHr
,
ProjectValueMoney = g.Key.ProjectValueMoney
,
CommentPipeline = g.Key.CommentPipeline
,
ClientName = g.Key.ClientName
,
FCOName = g.Key.NameFCO
,
FCOID = g.Key.FCOID
,
ClientID = g.Key.ClientID
,
CreatedTimeStamp = g.Key.CreatedTimeStamp
,
ModifiedTimeStamp = g.Key.ModifiedTimeStamp
,
CreatedBy = g.Key.CreatedBy
,
//CreatedNameSurname = g.Key.Employee.Name + " " + g.Key.Employee.Surname
JobStatusName = g.Key.JobStatusName
}
);
return (query2);
}