public IEnumerable<SummaryItem> GetSummaryData(SummarySettings settings)
{
return GetSummaryReportData(startTime, endTime, settings.AgentIds);
}
在我写完我的代码之后,我意识到我需要在settings.AgentIds
中添加一些ids
。找到两个集合的最有效方法是什么?
所以我这样做
public IEnumerable<SummaryItem> GetSummaryData(SummarySettings settings)
{
if (settings.LabelIds != null && settings.LabelIds.Any())
{
var labelGroups = _agentsGroupsStorage.Values.Where(x => settings.LabelIds.Contains(x.Id));
var labelAgentIds = labelGroups.SelectMany(x => x.AgentIds); // IEnumerable<Guid>
settings.AgentIds = new GuidCollection(labelAgentIds.Union(settings.AgentIds).ToList());
}
return GetSummaryReportData(startTime, endTime, settings.AgentIds);
}
如何提高我的算法结合两个收集?
也许没有创建new GuidCollection
?或者我需要使用Aggregate
而不是Union
?
1)这个实现有什么问题?什么让你担心? 2)聚合集合,它将集合减少为单个值3)联盟因为懒惰而非常快速,只是构建了一种链表。 – Andrey
是的。我真的不明白你在问什么。你目前的实施有问题吗?它太慢了吗?如果清晰度是目标,我想你已经在那里了。 – spender
@Andrey我担心速度和记忆力 – Anatoly