Я пытаюсь оптимизировать этот код:
foreach (string id in ids)
{
MyClass x = myDictionary[id];
foreach (var map in Maps)
{
if ( x.id == map.SourceId || x.id == map.DestionationId)
{
//add id to a hashset
}
}
}
, если ids.count равен 1600, а Maps.Count равен 300 000, занимает около 10 минут.
i 'Мы пробовали LINQ, но результаты не намного лучше:
var allIds = Maps.select(map => map.SourceId).Union(Maps.select(map => map.DestinationID)).Distinct();
var toAdd = from id in Ids
join mapId in AllIds on id equals mapid
select id;
//create hashset based on toAdd collection.
Может кто-нибудь указать мне на лучшее решение и, если возможно, объяснить, почему linq в этом случае не намного быстрее?
Спасибо