其中列表包含列表中的任何内容
Where list contains any in List
我只是将此数据发送到 Asp.net MVC5 中的报告引擎 (SSRS)。
一切都很好,但是这个查询花费了很多时间,因为我必须遍历 ListProducts
(我猜 ListProducts
是数据库匹配的大小)。
我正在寻找优化此查询的方法。
我已经尝试了 any
和 contains
(如下所示),但它们似乎在单个 table.
中不起作用
context.Products.Where(w => w.ProductDetail.Any(a => a.startDate >= startDate
&& a.endDate <= endDate))
我从 here
那里得到了这个
2)我试过了this as well
context.Products.Where(w => ListProducts.Any(x =>w.Contains(x)))
但这也行不通,并会生成
的编译时错误
System.Guid does not contains definition of 'Contains'
还有其他方法吗,或者我这样做是唯一正确的方法?
foreach (var item in ListProducts)
{
List.AddRange(_context.Products.Where(w => w.ProductId== item).Select(q => new ProductVM
{
Name = q.Name,
Quantity = q.Quantity,
}).ToList().Select(item=> new ProductVM
{
Name = item.Name,
Quantity = item.Quantity,
}).ToList());
}
public class Product
{
public Nullable<System.Guid> ProductId { get; set; }
public string Name { get; set;}
public decimal Quantity { get; set; }
}
好的,你能做吗:
var thelist = _context.Products.Where(n => ListProducts.Contains(n.ProductId)).Select(n => new ProductVM
{
Name = n.Name,
Quantity = n.Quantity
}).ToList();
我只是将此数据发送到 Asp.net MVC5 中的报告引擎 (SSRS)。
一切都很好,但是这个查询花费了很多时间,因为我必须遍历 ListProducts
(我猜 ListProducts
是数据库匹配的大小)。
我正在寻找优化此查询的方法。
我已经尝试了 any
和 contains
(如下所示),但它们似乎在单个 table.
context.Products.Where(w => w.ProductDetail.Any(a => a.startDate >= startDate
&& a.endDate <= endDate))
我从 here
那里得到了这个2)我试过了this as well
context.Products.Where(w => ListProducts.Any(x =>w.Contains(x)))
但这也行不通,并会生成
的编译时错误System.Guid does not contains definition of 'Contains'
还有其他方法吗,或者我这样做是唯一正确的方法?
foreach (var item in ListProducts)
{
List.AddRange(_context.Products.Where(w => w.ProductId== item).Select(q => new ProductVM
{
Name = q.Name,
Quantity = q.Quantity,
}).ToList().Select(item=> new ProductVM
{
Name = item.Name,
Quantity = item.Quantity,
}).ToList());
}
public class Product
{
public Nullable<System.Guid> ProductId { get; set; }
public string Name { get; set;}
public decimal Quantity { get; set; }
}
好的,你能做吗:
var thelist = _context.Products.Where(n => ListProducts.Contains(n.ProductId)).Select(n => new ProductVM
{
Name = n.Name,
Quantity = n.Quantity
}).ToList();