我的一个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()的性能来避免这种情况。有没有办法在这里应用索引或其他性能测量?