いくつかの可能なXElementの1つが存在するかどうかのXElementの確認

StackOverflow https://stackoverflow.com/questions/1805475

  •  05-07-2019
  •  | 
  •  

質問

指定された要素の1つがXElementに含まれているかどうかを判断する方法はありますか?たとえば、確認したいXElementがあります:

Dim xe1 = <color><blue/></color>
Dim xe2 = <color><red/></color>
Dim xe3 = <color><powderBlue/></color>
Dim xe4 = <color><aqua/></color>
Dim xe5 = <color><green/></color>

xelementのいずれかをクエリして、それらの下に要素<red/><green/>または<blue/>が含まれているかどうかを確認し、そうであればtrueを返し、そうでない場合はfalseを返したいと思います。

私はそれがよりシンプルになることを望んでいましたが、思いついたのは次のとおりでした:

Dim primaryColor = From e In xe1.Elements Where e.Name = "blue" Or e.Name = "red" Or e.Name = "green"
Dim primaryColorTrue = primaryColor.SingleorDefault
If primaryColorTrue IsNot Nothing Then
'Blah
End If

赤/緑/青のx要素を配列に入れ、Elements.Contains(要素のリスト)のようなものを使用するなど、これを行うためのより良い方法はありますか?

役に立ちましたか?

解決

正しく理解できたら-おそらく(C#を使用して、申し訳ありませんが、実際のC#固有のロジックはありません):

var colors = new[] {"red", "green","blue"};
bool any = el.Descendants().Any(child => colors.Contains(child.Name.LocalName));

VBがあなたと戦っても、.Any.SingleOrDefaultチェックの代わりにnullを使用できると確信しています。

情報については、ここで要素を使用すると、奇妙なアイデアのように聞こえます。可能であれば、テキストとして色名のみを使用します:

<somexml><color>blue</color></somexml>

または属性として:

<somexml color="blue"/>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top