1

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

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>

xelements のいずれかをクエリして、要素が含まれているかどうか<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

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

4

1 に答える 1

2

私が正しく理解している場合-おそらく(C#を使用して、申し訳ありません-しかし、ここには実際のC#固有のロジックはありません):

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

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

参考までに、ここで要素を使用するのは奇妙な考えのように思えます。可能であれば、テキストとして色名を使用します。

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

または属性としても:

<somexml color="blue"/>
于 2009-11-26T20:21:13.650 に答える