在 .NET 5 中填充 Enumerable Inside Enumerable
Fill Enumerable Inside Enumerable in .NET 5
我有一个包含多个“面板页面”的“面板”模型。我想获取所有面板的列表,并用各自的“面板页面”填充每个面板。
这是我目前的代码(有效):
public IEnumerable<DynamicCustomPanel> GetCustomPanels()
{
var customPanels = _customPanelService.GetDynamicCustomPanels();
var dynamicCustomPanels = customPanels.ToList();
foreach (var customPanel in dynamicCustomPanels.ToList())
{
var customPanelPages = _customPanelPageService.GetCustomPanelPages(customPanel.PanelGUID.ToString());
customPanel.CustomPanelPages = customPanelPages;
}
return dynamicCustomPanels;
}
如何以最少的行数完成此操作?
这应该有效:
public IEnumerable<DynamicCustomPanel> GetCustomPanels()
{
return _customPanelService.GetDynamicCustomPanels().Select(p => {
p.CustomPanelPages = _customPanelPageService.GetCustomPanelPages(p.PanelGUID.ToString());
return p;
});
}
这在技术上是 3 个语句(两个 returns 和一个赋值)和一个块,尽管它有点滥用 Select()
方法。我可能会这样写:
public IEnumerable<DynamicCustomPanel> GetCustomPanels()
{
foreach(var p in _customPanelService.GetDynamicCustomPanels())
{
p.CustomPanelPages = _customPanelPageService.GetCustomPanelPages(p.PanelGUID.ToString());
yield return p;
}
}
这是...也是 3 个语句(计数 foreach
)和一个块,只是间距不同以便多使用一行文本。
我有一个包含多个“面板页面”的“面板”模型。我想获取所有面板的列表,并用各自的“面板页面”填充每个面板。
这是我目前的代码(有效):
public IEnumerable<DynamicCustomPanel> GetCustomPanels()
{
var customPanels = _customPanelService.GetDynamicCustomPanels();
var dynamicCustomPanels = customPanels.ToList();
foreach (var customPanel in dynamicCustomPanels.ToList())
{
var customPanelPages = _customPanelPageService.GetCustomPanelPages(customPanel.PanelGUID.ToString());
customPanel.CustomPanelPages = customPanelPages;
}
return dynamicCustomPanels;
}
如何以最少的行数完成此操作?
这应该有效:
public IEnumerable<DynamicCustomPanel> GetCustomPanels()
{
return _customPanelService.GetDynamicCustomPanels().Select(p => {
p.CustomPanelPages = _customPanelPageService.GetCustomPanelPages(p.PanelGUID.ToString());
return p;
});
}
这在技术上是 3 个语句(两个 returns 和一个赋值)和一个块,尽管它有点滥用 Select()
方法。我可能会这样写:
public IEnumerable<DynamicCustomPanel> GetCustomPanels()
{
foreach(var p in _customPanelService.GetDynamicCustomPanels())
{
p.CustomPanelPages = _customPanelPageService.GetCustomPanelPages(p.PanelGUID.ToString());
yield return p;
}
}
这是...也是 3 个语句(计数 foreach
)和一个块,只是间距不同以便多使用一行文本。