查询表达式用原始列表加入上下文

Query Expression Join context with primitive list

我有以下 -

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));