Я работаю с API и клиентом данных, который возвращает два ILists: «устройства» и «производители». Существует около 100 производителей и около 2000 устройств.
factoryr.code - это код из двух или трех символов
factoryr.value - полное имя производителя
device.manufacturerCode = factoryr.code (устройство также имеет 20 другие свойства)
Я хочу заменить значение device.manufacturerCode на полное имя производителя. например,
до: device.manufacturerCode = "A C"
после: device.manufacturerCode = "Acme Products"
Это моя попытка:
IList<deviceDTO>device = await DataClient.MakeApiHttpRequestAsync(.......);
IList<manufacturerDTO>manufacturer = await DataClient.MakeApiHttpRequestAsync(.......);
for (int i = 0; i < device.Count(); i++)
{
device[i].ManufacturerCode = (from x in manufacturer
where x.Code == device[i].ManufacturerCode
select x.Value).ToList().First();
}
Есть несколько проблем:
1) Есть дубликаты у производителей (но не важно, какой я выберу, если я выберу один)
2) Некоторые device.manufacureCode отсутствует у производителей, что приводит к ошибке вышеупомянутого кода. Я хочу, чтобы в нем не было двух символов, если нет эквивалентного полного имени.
3) Мое решение (даже если оно сработало) выглядит очень неэффективно.
Есть ли лучший способ?