使用 linq-to-xml 进行动态选择?
我得到了一个 XML 文档,其中包含大量数据,分为类别->子类别。像这样:
<?xml version="1.0" encoding="utf-8" ?>
<data>
<car>
<transmission>
<option value="1" text="Manual" />
<option value="2" text="Automatic" />
</transmission>
<milage>
<option value="2" text="0-499" />
<option value="4" text="500-999" />
<option value="6" text="1000-1499" />
<option value="8" text="1500-1999" />
<option value="10" text="2000-2499" />
</milage>
<fuel>
<option value="1" text="Gasolin" />
<option value="2" text="Diesel" />
<option value="3" text="E95" />
<option value="4" text="Hybrid" />
<option value="5" text="Electric" />
</fuel>
</car>
</data>
我使用 Ajax 从 xml 文档中检索我需要的数据。 像这样:
public string GetData(int typeOfData)
{
List<string> queryString = new List<string>();
switch (typeOfData)
{
case 1:
// Car->Milage
queryString.Add("car");
queryString.Add("milage");
break;
case 2:
// Car-Fuel
queryString.Add("car");
queryString.Add("fuel");
break;
}
// Now i need to construct a query to return the data, i have tried something like this:
var results = from data in db.Elements("data") where (queryString => db.Elements(test)) select new { ID = data.Attribute("value").Value, Name = data.Attribute("text").Value };
}
}
使用 XPath,我可以简单地创建一个字符串来查询,但是我如何在 linq 中做到这一点?
I got a XML document with a lot of data divided into category->subcategory. Like this:
<?xml version="1.0" encoding="utf-8" ?>
<data>
<car>
<transmission>
<option value="1" text="Manual" />
<option value="2" text="Automatic" />
</transmission>
<milage>
<option value="2" text="0-499" />
<option value="4" text="500-999" />
<option value="6" text="1000-1499" />
<option value="8" text="1500-1999" />
<option value="10" text="2000-2499" />
</milage>
<fuel>
<option value="1" text="Gasolin" />
<option value="2" text="Diesel" />
<option value="3" text="E95" />
<option value="4" text="Hybrid" />
<option value="5" text="Electric" />
</fuel>
</car>
</data>
I am using Ajax to retrieve the data that i need from the xml document.
Like this:
public string GetData(int typeOfData)
{
List<string> queryString = new List<string>();
switch (typeOfData)
{
case 1:
// Car->Milage
queryString.Add("car");
queryString.Add("milage");
break;
case 2:
// Car-Fuel
queryString.Add("car");
queryString.Add("fuel");
break;
}
// Now i need to construct a query to return the data, i have tried something like this:
var results = from data in db.Elements("data") where (queryString => db.Elements(test)) select new { ID = data.Attribute("value").Value, Name = data.Attribute("text").Value };
}
}
With XPath i could just simple make a string to query with, but how do i do this in linq?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在 Linq 中使用 XPath。
You can use XPath in Linq.
您需要遍历 XML 树并获取包含
switch
语句中的选项的元素,如下所示:You need to traverse the XML tree and get the element containing the options in the
switch
statement, like this: