Linq-to-sql中匿名类型的性能改进

时间:2014-09-18 16:12:06

标签: c# performance linq linq-to-sql

我的一个Linq-to-sql查询的结果是两个字段(ItemId,Amount)的匿名类型。我想选择所有不同的ItemId值。 因此,执行以下操作会得到我期望的结果;

var distinctIds = allItems.Select( item => item.ItemId).Distinct().ToList();

由于该类是匿名类型,因此不会对ItemId建立索引,因此运行该函数需要大量时间。如果我将其更改为以下格式,则性能会提高65%以上。

var distinctIds = allItems.Select(item => item.ItemId).ToList().Distinct().ToList();

但是,这样我获取大约500,000个项目ID只是为了获得大约4-5个不同的ID。目前,这是时空权衡问题。我想看看是否有可能通过提高匿名类型的Select()。Distinct()的性能来避免这种情况。有没有办法在这里应用索引或其他性能测量?

0 个答案:

没有答案