I have two Dictionaries with around 65,000 KeyValuePairs each. I used foreach and if-else statements to compare them and get values, but it goes very slow. How could I optimize my code and gain more speed?
private void bgwCompare_DoWork(object sender, DoWorkEventArgs e)
{
var i = 0;
foreach (KeyValuePair<string, string> line1 in FirstDictionary)
{
foreach (KeyValuePair<string, string> line2 in SecondDictionary)
{
if (line1.Key == line2.Key)
{
ResultDictionary.TryAdd(line1.Value, line2.Value);
ListViewItem item = new ListViewItem(line1.Value);
item.SubItems.Add(line2.Value);
ResultList.Items.Add(item);
}
i++;
bgwCompare.ReportProgress(i * 100 / (FirstDictionary.Count() * SecondDictionary.Count()));
}
}
}