У меня есть следующее -
IEnumerable<int> vendorIds;
var vendors = (from v in _context.Vendors
where vendorIds.Any(v.VendorId));
но то, что я чувствую, это будет не так эффективно, как присоединение к продавцам со списком, и хотелось бы что-то вроде этого
var vendors = (from v in _context.Vendors
join vi in vendorIds on v.VendorId == vi);
Однако этот синтаксис недействителен. Я не совсем уверен, как сделать это сравнение. Некоторая помощь будет оценена
Ваш первый способ не должен влиять на производительность. Для подтверждения вы можете сравнить оба способа.
В синтаксисе запроса Linq нам нужно использовать equals
для соединения, например:
var vendors = (from v in _context.Vendors
join vi in vendorIds on v.VendorId equals vi
select v);
Но это можно сделать более простым способом, как показано ниже:
var vendors = _context.Vendors.Where(v => vendorIds.Any(vid => vid == v.VendorId));
да, последний «проще», однако это сложность n ^ 2
вместо
==
используйтеequals