首页 > 解决方案 > .First() 调用将如何影响性能?

问题描述

var result = users
.Where(x => x.IsActive)
.GroupBy(x => x.City)
.Select(x => new MyModel 
{
    Name = x.First().Name,
    Age = x.First(),
    CreatingDate = x.First().CreationDate,
    HairColor = x.First().HairColor
})
.ToArray();

每个组将调用多少次 x.First() 方法?这是否意味着每个组将调用该方法 4 次。或者是否有优化使用 x.First() 方法获取元素一次,然后将其保存到变量并使用该变量检索字段?

标签: c#linq

解决方案


JonasH 回答了您的问题,但如果您想要“如何避免多次First通话”问题的答案,请查看以下代码:

var result = users
.Where(x => x.IsActive)
.GroupBy(x => x.City)
.Select(x => new { Key = x.Key, First = x.First() })
.Select(x => new MyModel 
{
    Name = x.First.Name,
    Age = x.First.Age, // I assume there's a typo here in your code
    CreatingDate = x.First.CreationDate,
    HairColor = x.First.HairColor
})
.ToArray();

推荐阅读