如何减少多个嵌套的 foreach 块

2023-12-04

我有以下场景:

var Ids = object1.GetIds(); // returns IEnumerable<int>
foreach (var id in Ids)
{
    foreach (var relatedObject in object1.GetRelatedObjects(id))
    {
    // Do Something with related object
    }
}

在这种情况下,我想摆脱第一个 foreach 并将此逻辑简化为单个 foreach。我怎样才能做到这一点?

LINQ 表达式是否可以使用类似的方法?


当两个循环之间没有任何内容时,在嵌套循环之前或之后,您可以使用SelectMany将两个循环“压平”为一个:

foreach (var relatedObject in Ids.SelectMany(object1.GetRelatedObjects)) {
    ...
}

该循环与您拥有的循环之间的一个主要区别是id不再在范围内。假如说relatedObject暴露公众Id属性,这在您的情况下应该不是问题,因为您可以提取id回来与

var id = relatedObject.Id;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何减少多个嵌套的 foreach 块 的相关文章

  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • 为什么`Option`支持`IntoIterator`?

    我试图迭代字符串向量的一个子部分 即Vec
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • DataTable.GetChanges() 不断返回 NULL

    我正在尝试获取存在于的所有行allData但不在removeData public static DataTable RemoveDuplicateRows DataTable allData DataTable removeData re
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File

随机推荐

  • 如何重新启动一个线程

    我尝试编写一个文件监视器 如果附加了新行 它将检查文件 该监视器实际上是一个线程 它将始终通过随机访问文件读取该行 这是监控核心代码 public class Monitor public static Logger log Logger
  • 如何在 idl 中声明 IStream,以便 Visual Studio 将其映射到 s.w.interop.comtypes?

    我有一个 COM 对象 需要从 C 客户端获取流并对其进行处理 看来我应该使用 IStream 所以我像下面这样写我的idl 然后我使用 MIDL 编译为 tlb 编译我的解决方案 注册它 然后将对我的库的引用添加到 C 项目 Visual
  • C++ 字符串转二进制代码 / 二进制代码转字符串

    我需要将一个字符串转换为带有第一个字符串的二进制代码的字符串 对于第一部分 我使用了这个 将字符串转换为二进制的最快方法 工作完美 但我无法找到将其写入新字符串的方法 这是我到目前为止使用的代码 for size t i 0 i lt ou
  • Python循环遍历字符串并将其与通配符模式匹配

    string1 abc string2 abdabcdfg 我想知道 string1 是否是 string2 的子串 但是 也有通配符 例如 可以是任何字母 y can be a or d x can be b or c 因此 yx 将是子
  • SQL - WHERE 条件的顺序重要吗?

    假使 假设category id是表的索引键 不是主键 books 下面两条SQL语句有什么区别吗 SELECT FROM books WHERE author Bill AND category id 1 SELECT FROM book
  • 如何在 SymPy 中加速缓慢的矩阵乘法?

    我正在编写一个工具来使用 SymPy 求解特定的递推方程 并发现涉及矩阵乘法的步骤之一花费了非常长的时间 例如 如果我在 iPython 控制台中尝试以下操作 In 1 from sympy import In 2 A Matrix 500
  • 使用 ncurses pad 在 C 中滚动

    我试图在 ncurses 中获取一个窗口 在其中写入 mysql 查询的结果 但查询返回的行数比我终端中的行数多 所以我尝试创建一个垫子 以便我可以滚动浏览结果 但问题是 我的终端上没有可见的键盘 我只是简化了代码 但它仍然不适合我 inc
  • 完全合格的域名验证

    是否有一种快速而肮脏的方法来验证是否输入了正确的 FQDN 请记住 没有 DNS 服务器或互联网连接 因此必须通过 regex awk sed 完成验证 有任何想法吗 4 253 a zA Z0 9 1 63
  • CORS 错误,但仅在 POST 请求时出现,尽管有 cors 配置(GET 没有问题)

    我使用 Nodejs Express 服务器 尽管允许主机 但我仍然遇到 CORS 错误 请求中不存在 Access Control Allow Origin 标头 资源 但仅适用于 POST 端点 GET 没有问题 我的客户端浏览器允许使
  • 生成 PDF 时出现堆栈溢出异常 [重复]

    这个问题在这里已经有答案了 作为我的延续先前的问题我一直在尝试 PDF 的页眉和页脚功能 经过一番讨论后 我更改了 PdfPageEventHelper 类上的大量代码 以下是我所拥有的 public class ReportHeaderF
  • 将 VBA Range 复制粘贴到另一工作表 循环并转置数据

    对于 Excel 中的模型 我想将数据从工作簿中的一张工作表复制并粘贴到工作簿中的另一张工作表 并使用 for next 循环转置此数据 来自工作文件 CME 的数据应粘贴到 RME 工作文件中 数据总行数为2420 但是 由于复制和粘贴不
  • Android数据备份服务

    我正在尝试使用数据备份服务 以便保存用户共享首选项 如上所述here 然而 我在不同的Android版本中尝试测试时遇到了以下问题 安卓2 3 4 扩展 BackupAgentHelper 后 尝试使用 bmgr 工具测试服务 按照以下步骤
  • Rally 使用 Web 服务 API 批量添加测试用例结果

    我们即将开始通过 API 更新 Rally 测试结果的阶段 我找不到通过 Web 服务 API 执行此操作的示例 例如发布 xml 谁能指出我这一点吗 我还想知道有什么能力可以批量执行此操作 例如一次性上传一组测试结果 也许有连接器可以将各
  • Laravel 设置 cookie 不起作用

    我在自定义中间件中有以下代码 public function handle request Closure next if request gt hasCookie uuid return next request uuid 99 resp
  • 完全卸载并重新加载 Forge 查看器

    我在 Angular 5 应用程序上使用 Forge Viewer 有没有办法完全卸载查看器以便稍后重新加载 我有以下代码来卸载查看器 if this viewer this viewer running this viewer tearD
  • 从另一个线程启动我的表单时,它无法正确显示

    情况是这样的 我正在开发一个具有以下结构的简单应用程序 FormMain 启动点 表单通知 功能齐全 Right 嗯 在FormMain我有以下功能 private void DoItInNewThread ParameterizedThr
  • (!'which npm') 在 PHP 脚本中意味着什么?

    什么是 which npm 下面代码中的意思是 if which npm die You need to install NPM PHP EOL 以下是来自 GITHUB 的完整文件的链接 WPBP 生成器 bin wpbp 生成器 它检查
  • 使用 CI activerecords 组合 `where` 和 `like` 语句

    长话短说 是否可能 如果可能的话 我怎样才能构建一个看起来有点像这个的查询 SELECT FROM a WHERE row 1 AND other row LIKE OR another row LIKE 基本上我无法提出 找到这个问题的解
  • 从 WooCommerce 中的当前产品类别获取同级术语 ID 列表

    我想根据当前类别 ID 检索术语 ID 列表 目前我正在使用以下代码 product cat items get queried object product cat id product cat items gt term id prod
  • 如何减少多个嵌套的 foreach 块

    我有以下场景 var Ids object1 GetIds returns IEnumerable