ForEach中的c#静态成员

本文关键字:静态成员 中的 ForEach | 更新日期: 2023-09-27 18:04:06

我有以下内容:

blocks.Where(x => x.BlockName == NAVIGATION)
      .ForEach(block => block.Data = db.Pages.Select(x => x.Name).ToList());

如果where发现了多个块,我如何防止db.Pages.Select对每个块执行数据库命中,并简单地将List用于第二个和随后的块。

你可以有静态变量内lambda函数?

更新:如果where找到零块,我不想执行fetch。

ForEach中的c#静态成员

var blocksResult = blocks.Where(x => x.BlockName == NAVIGATION);
if (blocksResult.Any())
{
    var blockData = db.Pages.Select(x => x.Name).ToList();
    blocksResult.ForEach(block => block.Data = blockData);
}

List<string> blockData = null;
blocks.Where(x => x.BlockName == NAVIGATION).ForEach(block => block.Data = (blockData ?? (blockData  = db.Pages.Select(x => x.Name).ToList())))