我有import wx
import os
import main
class write(wx.Frame): # there is no start function, but still works
bleh
课程的对象列表。每个对象都有一个日期戳,Issue
表示问题是否仍然有效。对于给定的Boolean
(指其他地方的另一个集合),可能有多个条目有true或false,我只关心最新的真实值。
从此列表中,我需要获取其最新值中具有true的项目的所有ID的列表。我已经以一种看似疯狂的低效方式实现了这一点。我认为必须采用更简化的方法:
Issue ID
列表正确地只返回id 2,但我认为必须有更好的方法来实现它。
答案 0 :(得分:3)
var trueIdList = IssueList.OfType<Issue>()
.GroupBy(c => c.labelId)
.Select(c => c.OrderBy(o => o.AuditDate).LastOrDefault())
.Where(c => c.Result)
.Select(c => c.labelId)
.ToList();
答案 1 :(得分:1)
这是两个部分的问题。
首先,找到每个组项目中的最新项目,按ID分组:
var latest =
from issue in IssueList.OfType<Issue>()
group issue by issue.labelId into grp
select grp.OrderByDescending(g => g.AuditDate).FirstOrDefault();
然后隔离具有Result
成员集的项目列表:
var ids =
from issue in latest
where issue.Result
select issue.labelId;
在功能上,这相当于chsword的答案,但我认为分两部分来突出其功能的方式稍微清楚一点。