Мое предложение where в этом выражении xpath не работает и всегда возвращает 0. Я не могу понять, что не так. Код здесь. Значение переменной currentRelationship является "testentity_relname.";
var entity = doc.SelectNodes(string.Format("//Settings/Entity[RelationshipName={0}]", currentRelationship)).Cast<XmlNode>().ToList();
И XML-документ выглядит так:
<Settings>
<AccessRightTypes>
<AccessRightType>WriteAccess</AccessRightType>
<AccessRightType>ShareAccess</AccessRightType>
<AccessRightType>ReadAccess</AccessRightType>
<AccessRightType>NoneAccess</AccessRightType>
<AccessRightType>DeleteAccess</AccessRightType>
<AccessRightType>CreateAccess</AccessRightType>
<AccessRightType>AssignAccess</AccessRightType>
<AccessRightType>AppendToAccess</AccessRightType>
<AccessRightType>AppendAccess</AccessRightType>
</AccessRightTypes>
<Entity>
<RelationshipName>testentity_relname.</RelationshipName>
<AccessRight>ReadAccess</AccessRight>
<AccessRight>WriteAccess</AccessRight>
</Entity>
</Settings>
Если я использую выражение xpath только "//Settings/Entity", я получаю единственный Entity-узел обратно. Но опять же, предложение where не работает. И информация была бы весьма признательна.
Похоже, вам не хватает одиночных кавычек вокруг аргумента в строке формата xpath.
var entity = doc.SelectNodes(string.Format("//Settings/Entity[RelationshipName='{0}']", currentRelationship)).Cast<XmlNode>().ToList();