【发布时间】:2019-11-05 15:47:41
【问题描述】:
我有一个嵌套的 foreach 循环,我想知道根据 c# 中的 if 条件跳过记录的最佳方法。
以下是我的解决方案,如果有任何改进或建议,请告诉我。
foreach (var ospMap in sourceSpecificMaps)
{
foreach (var idMapSensorId in ospMap.SensorIds)
{
try
{
if (string.IsNullOrEmpty(idMapSensorId.SourceId))
{
throw new Exception($"SourceId couldn't be found in the { idMapSensorId.SensorId } sensor. The sensor is being skiped.");
}
_ospIdMapDictionary[GenCacheId(sourceId, idMapSensorId.SensorId)] = ospMap;
}
catch (Exception)
{
// We continue through the loop
continue;
}
}
}
【问题讨论】:
-
如果你对异常什么都不做,你可以把
continue;放在if语句中 -
除了您抛出的异常之外,您是否期望任何其他异常?
-
您如何在 C# 中使用 C++ 库“boost-foreach”?
-
去掉try/catch,把
continue放到if中。如果“干净”和“聪明”被证明是相互排斥的,那么您对“聪明”的定义就严重错误了。 -
看起来像一个简单的
.SelectMany(...).Where(...).ToDictionary(...),假设这会创建整个字典。
标签: c# foreach .net-core boost-foreach