2011-03-11 11 views
0

私はその要素のsub要素の属性に基づいて要素を選択しようとしています。子孫要素の属性によるXElementsのフィルタリング

元のXMLは:

Dim xmlElement = (From rec In RecipeXmlDocument.Descendants("RECEPT") _ 
Where (rec.Descendants("Filter")[email protected] = Ing.Poultry.ToString() _ 
        Or rec.Descendants("Filter")[email protected] = "1" _ 
        Or rec.Descendants("Filter")[email protected] = "0" _ 
        And (rec.Descendants("Filter")[email protected] = "1" _ 
         Or rec.Descendants("Filter")[email protected] = "0" _ 
         Or rec.Descendants("Filter")[email protected] = "1" 

これは、次のエラースロー:「型 'System.Linq.SystemCore_EnumerableDebugViewEmptyException' の例外がスローされました

<Root> 
     <Element1 id="1"> 
     <element2>XXXX</element2> 
     <element2>XXXX</element2> 
     <element2>XXXX</element2> 
     <Filter attr1="1" attr2="0" attr3="0" attr4="1" attr5="0"></Filter> 
     </Element1> 
     <Element1 id="2"> 
     <element2>XXXX</element2> 
     <element2>XXXX</element2> 
     <element2>XXXX</element2> 
     <Filter attr1="1" attr2="0" attr3="0" attr4="1" attr5="0"></Filter> 
     </Element1> 
     <Element1 id="3"> 
     <element2>XXXX</element2> 
     <element2>XXXX</element2> 
     <element2>XXXX</element2> 
     <Filter attr1="1" attr2="0" attr3="0" attr4="1" attr5="0"></Filter> 
     </Element1> 
    </Root> 

これは私がこれまで何をやったかであります"

コードが実行しようとしているのは、その要素1のフィルタ要素が文のwhere句と一致するすべての要素1を選択することです。

私はかなりlinqに新しいです、そして、私は間違っていることを正確には分かりません。

+1

問題を再現できるように完全なサンプルを投稿してください。投稿されたサンプルに "RECEPT"という名前の要素が含まれていないと考えれば、あなたの投稿されたサンプル文書との 'RecipeXmlDocument.Descendants(" RECEPT ")'エラーを説明するには、それを再現するのに十分な情報を確認する必要があります。 –

+0

申し訳ありませんが、 "RECEPT"要素は、投稿したXmlの例では "Element1"です。 – Martinffx

答えて

0

xmlから正確に何を選択しますか? linqステートメントにselectステートメントがありません。 があなたのLINQ文の末尾に選択を追加し、さらに

(タグから何でも)、あなたはつまり、あなたが検索しようとしている要素「上」

From rec In RecipeXmlDocument.Descendants("RECEPT") 

をナビゲートしている例を選択しなければなりません以下は

From rec In RecipeXmlDocument.Descendants 

あなたはselect文

Dim xmlElement = From rec In RecipeXmlDocument.Descendants Where rec...<Filter>[email protected] = Ing.Poultry.ToString Or rec...<Filter>[email protected] = "1" Or rec...<Filter>[email protected] = "0" And (rec...<Filter>[email protected] = "1" Or rec...<Filter>[email protected] = "0" Or rec...<Filter>[email protected] = "1") 
を連結する必要があるために改正文です

注:選択できるようにするには、タグ内にいくつかの要素を追加する必要があります

関連する問題