diff --git a/src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs b/src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs index 4ce094d37..497373d97 100644 --- a/src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs +++ b/src/DocumentFormat.OpenXml.Framework/Validation/Semantic/SemanticConstraint.cs @@ -125,7 +125,7 @@ private static void Get(ValidationContext context, out SemanticValidationLevel l if (string.IsNullOrEmpty(parts[0])) { - return GetPartThroughPartPath(current.Package.Parts, parts.Skip(1).ToArray()); // absolute path + return GetPartThroughPartPath(current.Package.Parts, parts.Skip(1)); // absolute path } else if (parts[0] == "..") { @@ -242,15 +242,15 @@ protected static bool GetAttrNumVal(OpenXmlSimpleType attributeValue, out double } [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1851:Possible multiple enumerations of 'IEnumerable' collection", Justification = "We're resetting the parts variable, but the analyzer doesn't realize that")] - private static OpenXmlPart? GetPartThroughPartPath(IEnumerable pairs, string[] path) + private static OpenXmlPart? GetPartThroughPartPath(IEnumerable pairs, IEnumerable path) { var foundPart = default(OpenXmlPart); var parts = pairs; - for (int i = 0; i < path.Length; i++) + foreach (var pathPart in path) { foundPart = parts - .Where(p => p.OpenXmlPart.GetType().Name == path[i]) + .Where(p => p.OpenXmlPart.GetType().Name == pathPart) .Select(t => t.OpenXmlPart) .SingleOrDefault();