Accepted answer

I think that making it into one method with two parameters would look slightly better:

Codes.AttributeValueMatching(@"R-1\CHE", codeIndex)

Or you could create a wrapper with an indexer:

CodesWrapper[@"R-1\CHE", codeIndex]


I don't have a direct answer to your whole question, but to the "problems with this approach" section I have a suggestion.

Be careful chaining statements after a SingleOrDefault() as it could potentially return null. If you are absolutely sure it will always have a single value, maybe just call Single() and deal with that missed expectation should it ever happen instead of a more generic NullReferenceException.

EDIT While writing the above post you made the same changes. Carry on...


Have you considered building an Extension Method of DataTree?


public static class DataTreeExtensions
      public static string FetchByAttribute(this DataTree d, string Attribute)
         string AttributeValue = d
                         .Single(x => x.EqualsCodeIndex(parentAttribute.CodeIndex))

            return AttributeValue


This will allow you to reuse "FetchByAttribute" at will as:

string myValue = myTree.FetchByAttribute(@"R-1\CHE");

Edited: changed from DataNode to DataTree...

Related Query

More Query from same tag