public IEnumerable<SummaryItem> GetSummaryData(SummarySettings settings)
{
return GetSummaryReportData(startTime, endTime, settings.AgentIds);
}
После того как я написал свой код, я понял, что мне нужно добавить ids
в settings.AgentIds
.Каков наиболее эффективный способ найти объединение двух коллекций?
Так я делаю следующее
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 Im, беспокоясь о скорости и воспоминаниях – Anatoly