[英]Choose first 5 unique rows using Linq
我目前使用此查询得到重复的行:
List<SetInstance> RelatedSets = (from proc in dc.Processes
join sip in dc.SetInstanceProcessBindingInPIs
on proc.ID equals sip.ProcessID
join si in dc.SetInstances
on sip.SetInstanceID equals si.ID
where proc.StationID == StationID
select new SetInstanceProcess {
SI = si,
Process = proc
}
).Distinct()
.OrderByDescending(x => x.Process.FinishDate)
.Take(5).Select(x => x.SI)
.ToList()
.ConvertAll<SetInstance>(i => (SetInstance)i)
.ToList();
我只想从最后一个Process.FinishDate
和si.ProcessID
。 有人可以指出我正确的方向吗?
编辑:我尝试实现IEqualityComparer
并重写equals方法,并在Date
参数上使用Max
函数(它们均无效)
问题是您要在查询的{SI, Process}
结果中执行不同的查询。 如果仅希望区分SI
,请尝试修改查询以在选择之后调用Distinct。 我认为类似这样的方法会起作用:
List<SetInstance> RelatedSets = (from proc in dc.Processes
join sip in dc.SetInstanceProcessBindingInPIs
on proc.ID equals sip.ProcessID
join si in dc.SetInstances
on sip.SetInstanceID equals si.ID
where proc.StationID == StationID
select new SetInstanceProcess {
SI = si,
Process = proc
}
).OrderByDescending(x => x.Process.FinishDate)
.Select(x => x.SI)
.Distinct()
.Take(5)
.ToList()
.ConvertAll<SetInstance>(i => (SetInstance)i)
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.