私は2種類の情報を持つXMLファイルを持っています - 場所とジョブの種類はSLvl
の値で決定されます。私はSearchTxt
の値を2つのドロップダウン(1つは場所用、1つは職種用)にバインドして、自分のページのフィルターとして使用したいと考えています。LINQ to XML - Where句
問題は、SLvl
の値をフィルタリングするために私のwhere節をかなり取得できないという問題です。 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 to XMLを初めて使用したので、どのような助けも大いに喜んでいます。 注: XMLはサードパーティより提供され、したがって、ユーザーはフォーマットすることができます。
回答ありがとうございました。 .valueという設定が解決策だったようだ。私が最初にそれを試したとき、それは仕事をしませんでした:sは、SLvl 0のアイテムを持っていません。ありがたいことに、誰も私の愚かさに気付いた:) –
XPath –
私は先に行った、それは痛いです:) –