查询表达式用原始列表加入上下文
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));
我有以下 -
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));