【发布时间】:2019-11-12 17:31:05
【问题描述】:
如何将给定的 foreach 语句转换为单个 LINQ 查询?
foreach (SubsystemBuild img in contentsXMLObj.SubsystemBuilds)
{
foreach (BuildImage buildImage in build.Images)
{
if (buildImage.Name.Equals(img.BuildName) &&
buildImage.IsOverride == false &&
img.BaseBuildPath != null)
{
buildImage.LocalPath = img.BaseBuildPath;
}
}
}
【问题讨论】:
-
欢迎来到 StackOverflow!由于我们不是代码编写服务,如果您向我们展示您的尝试是如何失败的,您可能会获得更多帮助。
-
在处理嵌套的
foreach时,您需要在转换为 Linq 时使用SelectMany。但是,由于这有副作用,您实际上应该仍然至少有一个foreach。事实上,我会说保持原样。 -
@juharr 无法使用 linq 完全替换嵌套的 foreach
-
是的,您可以替换嵌套的
foreach,但是您的代码有副作用,因此您仍然必须遍历 Linq 查询以执行副作用(设置LocalPath)。我个人认为这段代码不会从转换到 Linq 中受益。 -
没有理由将此代码转换为 LINQ 格式。我认为它更易读(也更容易维护)。