Я только что увидел этот кусок кода и спросил себя, как его можно улучшить, чтобы уменьшить количество запросов. Попробовал несколько операторов LINQ, но не смог найти ответ.
public static Dictionary<string, Computer> GetComputer(IEnumerable<string> workStations)
{
var dict = new Dictionary<string, Computer>();
using (var db = new ComputerContext())
{
foreach (var workStation in workStations)
{
var t = db.Computers.FirstOrDefault(o => o.Id.Equals(workStation));
if (!dict.ContainsKey(workStation))
{
dict.Add(workStation, t);
}
}
return dict;
}
}
При попытке что-то вроде этого:
var computers = db.Computers.Where(x => workStations.Select(y => y).Equals(x.Id)).ToList();
foreach (var computer in computers)
{
if (!dict.ContainsKey(computer.Id))
{
dict.Add(computer.Id, computer);
}
}
Intellisense говорит мне «Подозрительное сравнение: в решении нет типа, унаследованного от обоих
'System.Collections.Generic.IEnumerable' и 'string' ", которые
приводит к исключению "Невозможно сравнить элементы типа
'System.Collections.Generic.IEnumerable`1 [[System.String, mscorlib,
Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089]] '.
Только примитивные типы, типы перечисления и типы объектов
поддерживается. "