以下に示すようなXMLがあります
<NodeName Foo="True" Foobar="False" />
<NodeName Foo="False" Foobar="False" />
<NodeName Foo="True" Foobar="False" />
これをクエリして、Foo 値が「True」の NodeName を見つけるために、次を使用しています。
.Where(node => node.Attribute("Foo").Value = "True");
ただし、属性 Foo が存在しない可能性があり、これにより例外が発生します。
問題は、属性が存在するかどうかを確認し、存在する場合は値を確認するロジックをどのように実装するかです。
私は次のことを試しましたが、現在、すべてのパスで値を返さないというエラーでコンパイルされないため、elseブラケットに何が入って何も返されないのかわかりません。
.Where(node =>
{
if (node.Attribute("Foo") != null)
{
node.Attribute("Foo").Value == "True";
}
else { }
});