哪个查询已优化?

时间:2015-09-27 07:07:58

标签: c# entity-framework

我正在提取产品清单,包括价格。我想获得价格。

我写了两种类型的查询:

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

哪一个更优化?

2 个答案:

答案 0 :(得分:2)

假设您正在使用EntityFramework上下文,第一个更好。

这是因为Linq to SQL会将语句翻译成SQL语句。 Where语句将生成相应的SQL Where。因此,只检索元素的必要子集。

第二个语句检索所有产品和价格,然后删除不需要的元素。

这假设您有一个远程数据库。如果您的数据库在本地运行,或者您已经拥有内存中的所有产品和价格,那么就不那么容易分辨(您必须使用分析器)。

答案 1 :(得分:0)

这类问题实际上取决于很多事情,所以要说哪个更好是不容易的。

但是从代码中,第一个是在 sql 端执行where子句,其中第二个代码从sql获取所有数据并在应用程序中执行

因此它将取决于sql server,应用程序硬件和数据量。