性能明智,这两者中哪一个是最快的?
只需使用where子句或不选择任何列等。
var products = db.Products.OrderByDescending(p => p.ProductExpirationDate);
或根据此查询更明确地使用列等
var products = (from p in db.Products
select new GenericEcomDataAccess.ProductView
{
ProductID = p.ProductID,
ProductOwnerUserId = p.ProductOwnerUserId,
ProductCurrency = p.ProductCurrency,
ProductDescription = p.ProductDescription,
ProductPrice = p.ProductPrice,
ProductImage = p.ProductImage,
ProductName = p.ProductName
}).OrderByDescending(p => p.ProductExpirationDate).AsEnumerable().ToList();
答案 0 :(得分:0)
首先,它们产生不同的结果(第二个使用ToList()
来改变结果类型)。
在性能方面,您没有提供足够的信息。它实际上取决于你的桌子。如果第二个查询提取表的每个列,它们是相同的。如果没有,第二个可能更快(因为对表的一部分进行排序需要较少的操作然后对整个表进行排序)。
但我猜它实际上并不重要,因为渐近它们是相同的。如果它不是你计划中性能关键的一部分,我的猜测是你不应该真正关心。
(是的,既然这些查询只是内部的SQL语句,最好用SQL标记来询问,而不是C#。或者至少将它添加到标签中。)