У меня есть 2 DataTables . Имеется около 17000 (таблица1) и 100000 (таблица2) записей.
Необходимо проверить, содержит ли поле "FooName"" Имя элемента". Также необходимо взять "FooId" и затем добавить "ItemId" и "FooId" в ConcurrentDictionary.
У меня есть этот код.
DataTable table1;
DataTable table2;
var table1Select = table1.Select();
ConcurrentDictionary<double, double> compareDictionary = new ConcurrentDictionary<double, double>();
foreach (var item in table1)
{
var fooItem = from foo in table2.AsEnumerable()
where foo.Field<string>("FooName").Contains(item.Field<string>("ItemName"))
select foo.Field<double>("FooId");
if(fooItem != null && fooItem.FirstOrDefault() != 0)
{
compareDictionary.TryAdd(item.Field<double>("ItemId"), fooItem.FirstOrDefault());
}
}
Работает медленно (выполнение задачи занимает около 10 минут).
Я хочу сделать это быстрее. Как я могу это оптимизировать?