我正在开发一个自定义搜索控件,并根据下面的示例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>
您能否根据 Master 或 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()
};
这只返回属性列表而不是必要的值。
答案 0 :(得分: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
}
);
答案 1 :(得分:1)
你可以尝试:
elem.Descendants("PageName").
Where(element => element.Attribute("Name").Value == "Master").First().
Descendants().Select(element => element.Value);
含义 - &GT;获取名为“Master”的第一个孩子,然后获取所有孩子节点的值