У меня есть 2 таблицы данных. Имеется около 17000 (таблица1) и 100000 (таблица2) записей.
Необходимо проверить, содержит ли поле "FooName" "ItemName". Также необходимо взять "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 минут).
Я хочу сделать это быстрее. Как я могу его оптимизировать?
ItemName
это одно слово или фраза? - person mtkachenko   schedule 05.03.2020