0

以下のサンプルXMLに基づいて、カスタム検索コントロールを開発し、その構成を設定しています。したがって、ユーザーがASPXページで私のコントロールを使用し、ページでプロパティを次のように宣言した場合:

<ccl:Search control id='searchtextbox' PageName='Master' /> 

次に、Pagename name ='Master'を検討し、この下に記載されているすべてのプロパティを設定する必要があります。同様にPageName='SearchResults'の場合

<configuration>
 <Pagename name='Master'>
   <Key id='DefaultText'>Search</Key>
   <Key id='SearchBoxCss'>btn</Key>
   <Key id='ButtonText'>Search</Key>
   <Key id='AutocompleteEnabled'>true</Key>
   <Key id='EnableFilterDropNames'>false</Key>
   <Key id='FilterDropNames'>All Areas;Articles</Key>       
 </Pagename>
 <Pagename name='SearchResults'>
   <Key id='DefaultText'>Search</Key>
   <Key id='SearchBoxCss'>btn</Key>
   <Key id='ButtonText'>Search</Key>
   <Key id='AutocompleteEnabled'>false</Key>
   <Key id='EnableFilterDropNames'>false</Key>
   <Key id='FilterDropNames'>All Areas;Articles;Products</Key>                            
 </Pagename>
</configuration>

マスターまたはSearchResultsに基づいて選択するために必要なLINQコードを提案できますか

私が試したこと:

var ch = from elem in doc.Descendants("Pagename")
                   where elem.Attribute(XName.Get("name")).Value == "Master"
                   select new
                   {
                       Children = elem.Descendants("Key").Attributes()
                   };

これにより、属性のリストのみが返され、必要な値は返されません。

4

2 に答える 2

2
var ch = doc.Descendants("PageName")
            .Where(p => (string)p.Attribute("name") == "Master")
            .Elements("Key")
            .Select(k => new
                         {
                             Id = (string)k.Attribute("id"),
                             Value = k.Value
                         }
            );
于 2012-06-13T08:12:14.960 に答える
1

あなたが試すことができます:

elem.Descendants("PageName").
            Where(element => element.Attribute("Name").Value == "Master").First().
            Descendants().Select(element => element.Value);

意味->「マスター」という名前の最初の子を取得し、そのすべての子ノードの値を取得します

于 2012-06-13T08:02:29.733 に答える