我正在提取产品清单,包括价格。我想获得价格。
我写了两种类型的查询:
context.Products.Include("Prices").Where(p=>p.Prices.Where(pr=>pr.Enable==true).Count()>0).ToList();
另一个是:
context.Products.Include("Prices").ToList().RemoveAll(p => p.Prices.Where(pr => pr.Enable == true).ToList().Count == 0);
哪一个更优化?
答案 0 :(得分:2)
假设您正在使用EntityFramework
上下文,第一个更好。
这是因为Linq to SQL
会将语句翻译成SQL
语句。 Where
语句将生成相应的SQL
Where
。因此,只检索元素的必要子集。
第二个语句检索所有产品和价格,然后删除不需要的元素。
这假设您有一个远程数据库。如果您的数据库在本地运行,或者您已经拥有内存中的所有产品和价格,那么就不那么容易分辨(您必须使用分析器)。
答案 1 :(得分:0)
这类问题实际上取决于很多事情,所以要说哪个更好是不容易的。
但是从代码中,第一个是在 sql 端执行where子句,其中第二个代码从sql获取所有数据并在应用程序中执行强>
因此它将取决于sql server,应用程序硬件和数据量。