我有集团通过条款如下LINQ的发言,并想知道如何引入一个让或任何其他语句,避免重复的子查询, lifecycleEvents.Where(I => i.LifecycleEventId == grouping.Key)。首先()
在下面的例子
VAR completionTimeModels =
从时间轴上processTimelines
组时间线timeline.LifecycleEventId到分组
选择新CompletionTimeViewModel()
{
//如何避免重复相同的查询,找到生命周期的事件吗?
名称= lifecycleEvents.Where(I => i.LifecycleEventId == grouping.Key)。首先()LifecycleEventName,
显示名称= lifecycleEvents.Where(I => i.LifecycleEventId == grouping.Key)。首先()LifecycleEventDisplayName。
};
解决方案
VAR completionTimeModels =
从时间轴上processTimelines
组时间线timeline.LifecycleEventId到分组
让富= lifecycleEvents.First(I => i.LifecycleEventId == grouping.Key)
选择新CompletionTimeViewModel()
{
名称= foo.LifecycleEventName,
显示名称= foo.LifecycleEventDisplayName
};
I have the following Linq statement with 'Group by' clause and would like to know how to introduce a let or any other statement to avoid repeating the sub query, lifecycleEvents.Where(i => i.LifecycleEventId == grouping.Key).First()
in the following example
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
};
解决方案
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
};