我有一个名为库存的对象,其类型为IQueryable。当我使用linq运行清单.Count()时,将生成以下SQL(我使用实体框架记录器查看正在生成的实际查询):
SELECT Count(*)
FROM Inventory
我还有另一个linq语句,该语句采用相同的清单对象并在其上运行以下命令:
inventory.Select(x => x.Id).Distinct().Count();
这将产生此SQL查询:
SELECT Id, name, quantity, cost
FROM Inventory
它不使用SQL计数语法。为什么?如果创建的第一个linq语句创建了优化的sql查询,为什么这个语句创建的效率低下?