我有以下算法来找到两个集合的并集。
IEnumerable<IGroup> labelGroups = _agents.Where(x => settings.LabelIds.Contains(x.Id));
IEnumerable<Guid>labelAgentIds = labelGroups.SelectMany(x => x.AgentIds);
settings.AgentIds = new Collection<Guid>(labelAgentIds.Union(settings.AgentIds).ToList());
或者
IEnumerable<IGroup> labelGroups = _agents.Where(x => settings.LabelIds.Contains(x.Id));
agentIds = labelGroups.Aggregate(agentIds, (current, label) => current.Union(label.AgentIds));
我应该使用哪个算法?帮我比较一下这些算法(速度和内存)。
Stopwatch
类进行检查,或者使用性能分析方法。 - FabjanHashSet<T>
和方法UnionWith
。正如 @Fabjan 所说,使用Stopwatch
可以很好地检查性能。 - Felipe Oriani