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