如何使用Group by在Linq语句中引入Let关键字

skj*_*ini 7 .net c# linq group-by

我有以下带有'group by'子句的Linq语句,并想知道如何引入let或任何其他语句以避免重复子查询,lifecycleEvents.Where(i => i.LifecycleEventId == grouping.Key).First()在下面的示例中

var completionTimeModels =
    from timeline in processTimelines 
    group timeline by timeline.LifecycleEventId into grouping
    select new CompletionTimeViewModel()
    {
        // How to avoid repeating the same query to find the life cycle event?
        Name = lifecycleEvents.Where(i => i.LifecycleEventId == grouping.Key).First().LifecycleEventName,
        DisplayName = lifecycleEvents.Where(i => i.LifecycleEventId == grouping.Key).First().LifecycleEventDisplayName
    };
Run Code Online (Sandbox Code Playgroud)

cap*_*aig 9

var completionTimeModels =
from timeline in processTimelines

group timeline by timeline.LifecycleEventId into grouping
let foo = lifecycleEvents.First(i => i.LifecycleEventId == grouping.Key)
select new CompletionTimeViewModel()
{
    Name = foo.LifecycleEventName,
    DisplayName = foo.LifecycleEventDisplayName
};
Run Code Online (Sandbox Code Playgroud)