When I run the following code where campaigns.Count() is 200,000 this code is really slow.
List<Campaign> listCampaigns = new List<Campaign>();
foreach (var item in campaigns)
{
if (listCampaigns.Where(a => a.CampaignName == item.CampaignName && a.Term == item.Term).Count() == 0)
{
//this doesn't exist
listCampaigns.Add(item);
}
else
{
//this exists already
var campaign = listCampaigns.Where(a => a.CampaignName == item.CampaignName && a.Term == item.Term).First();
campaign.TotalVisits += item.TotalVisits;
List<Conversion> listConversions = item.Conversions.ToList();
listConversions.AddRange(campaign.Conversions.ToList());
campaign.Conversions = listConversions.ToArray();
}
}
Is there anyway to optimize parts of this code or use another method to speed it up?
Any suggestions are appreciated. Thanks.
This should be significantly faster: