我有一個XML文件,其中包含兩種類型的信息 - 由SLvl
值確定的位置和作業類型。我希望將這些值的SearchTxt
值綁定到2個下拉列表(一個用於位置,另一個用於作業類型),以用作我的頁面上的過濾器。LINQ to XML - Where子句
問題是我不能讓我的where子句過濾SLvl
值。在where子句中沒有返回結果。如果我刪除它,查詢確實會返回所有文本值。
C#
using System.Xml.Linq;
using System.Linq;
.....
// Loading from file
XDocument loaded = XDocument.Load(@"http://[LINKREMOVED]/vacancies.aspx");
// Query the data
var q = (from c in loaded.Descendants("items")
where c.Element("SLvl").ToString() == "0"
select c.Element("SearchTxt").ToString()).Distinct();
// Populate drop down
foreach(string name in q)
{
ddlLocation.Items.Add(new ListItem(name, name));
}
XML:
<VacancyMatch>
<items>
<SearchID>60</SearchID>
<SearchTxt>Scotland</SearchTxt>
<ParentID>0</ParentID>
<SearchCatID>1</SearchCatID>
<SLvl>1</SLvl>
<SubCat>1</SubCat>
</items>
<items>
<SearchID>92</SearchID>
<SearchTxt>Accounting</SearchTxt>
<ParentID>60</ParentID>
<SearchCatID>2</SearchCatID>
<SLvl>2</SLvl>
<SubCat>2</SubCat>
</items>
... More items here
</VacancyMatch>
我想這個問題是數據是在同一水平?這是我第一次使用LINQ到XML,所以任何幫助都非常有用。 注: XML由第三方提供,因此格式取決於他們。
謝謝你的回答都有幫助。似乎設置.value是解決方案。當我第一次嘗試它時它沒有工作:s,事實證明我沒有SLvl 0的任何項目,1是最低的。幸運的是沒有人注意到我的愚蠢:) – 2012-01-06 11:30:37
是一個男人,並使用XPath – 2012-01-06 11:34:18
我以前做過,這很痛苦:) – 2012-01-06 11:42:16