【发布时间】:2018-06-12 18:59:00
【问题描述】:
我有一个如下所示的 Foreach 语句
foreach (var fieldMappingOption in collectionHelper.FieldMappingOptions
.Where(fmo => fmo.IsRequired && !fmo.IsCalculated
&& !fmo.FieldDefinition.Equals( MMPConstants.FieldDefinitions.FieldValue)
&& (implicitParents || anyParentMappings
|| fmo.ContainerType == collectionHelper.SelectedOption.ContainerType)))
{
if (!collectionHelper.FieldMappingHelpers
.Any(fmh => fmh.SelectedOption.Equals(fieldMappingOption)))
{
requiredMissing = true;
var message = String.Format(
"The MMP column {0} is required and therefore must be mapped to a {1} column.",
fieldMappingOption.Label, session.ImportSource.CollectionLabel);
session.ErrorMessages.Add(message);
}
}
我能否将上述复杂的 foreach 和 IF 语句分解为格式更好的 LINQ 表达式。此外,性能方面会更好。请提出建议。
【问题讨论】:
-
我不太明白你在这里问什么。您的代码中似乎没有什么很复杂。 “格式更好的 LINQ 表达式”是什么意思?您可以通过将
String.Format更改为简单的字符串连接来提高性能。String.Format比字符串连接慢。 -
这可能是 codereview.stackexchange 的更好候选者。
-
感谢@ZoharPeled 的评论。我想知道是否有任何可能我们可以将 Foreach 更改为 Linq 语句,因为条件太长了
标签: c# entity-framework linq foreach linq-to-sql