C# 如何获取包含某些“XML”的XML元素范围;价格“;在C中#
我试图用linq获取XML文件的一系列值,这些值在一定的价格范围内,我不太确定如何实现,但我知道如何获取每个元素的价格 我试着列出每种元素的价格,然后应用范围内的所有内容,但我不知道如何保持品牌,因为我必须展示价格范围内现有汽车的品牌 XML:C# 如何获取包含某些“XML”的XML元素范围;价格“;在C中#,c#,.net,xml,linq,C#,.net,Xml,Linq,我试图用linq获取XML文件的一系列值,这些值在一定的价格范围内,我不太确定如何实现,但我知道如何获取每个元素的价格 我试着列出每种元素的价格,然后应用范围内的所有内容,但我不知道如何保持品牌,因为我必须展示价格范围内现有汽车的品牌 XML: 显然,我只得到了“100”值,但我希望得到100到120之间的范围(作为示例),但不确定如何做到这一点。您可能希望将价格解析为十进制或其他数字类型。然后可以执行范围检查。比如说 var carInRange = str.Elements("Car")
显然,我只得到了“100”值,但我希望得到100到120之间的范围(作为示例),但不确定如何做到这一点。您可能希望将价格解析为十进制或其他数字类型。然后可以执行范围检查。比如说
var carInRange = str.Elements("Car")
.Where(x => decimal.TryParse(x.Element("Price").Value, out decimal price)
&& price < 100m))
.ToList();
var carInRange=str.Elements(“汽车”)
其中(x=>decimal.TryParse(x.Element(“Price”).Value,不含十进制价格)
&&价格(亿美元以下)
.ToList();
您可能希望将价格解析为十进制
或其他数字类型。然后可以执行范围检查。比如说
var carInRange = str.Elements("Car")
.Where(x => decimal.TryParse(x.Element("Price").Value, out decimal price)
&& price < 100m))
.ToList();
var carInRange=str.Elements(“汽车”)
其中(x=>decimal.TryParse(x.Element(“Price”).Value,不含十进制价格)
&&价格(亿美元以下)
.ToList();
使用XPath怎么样?它比嵌套linq操作更具可读性:
var carsInRange = xml.XPathSelectElements("/Car[Price > 100 and Price <= 120]");
var carsInRange=xml.XPathSelectElements(“/Car[Price>100和Price 100和Price使用XPath怎么样?它比嵌套linq操作更可读:
var carsInRange = xml.XPathSelectElements("/Car[Price > 100 and Price <= 120]");
var carsInRange=xml.XPathSelectElements(“/Car[Price>100和Price 100,Price几乎满足了我的需求,但我想指定最低价格和最高价格,在本例中,例如double minimumPrice=100;double maximumPrice=120;您可以使用任何需要的条件表达式。在本例中,您可以使用decimal.TryParse(…)&&price>=minimumPrice&&price几乎满足了我的需求,但我想指定最低价格和最高价格,在本例中,例如double minimumPrice=100;double maximumpprice=120;您可以使用任何条件表达式。在本例中,您可以使用decimal.TryParse(…)&&price>=minimumPrice&&price
var cars = xml.Elements("Car");
var carsInRange2 = from c in cars
let price = (decimal)c.Element("Price")
where price > 100 && price <= 120
select c;
Console.WriteLine(carsInRange2.Count());
using System;
using System.Linq;
using System.Xml.Linq;
using System.Xml.XPath;
internal class Program
{
private static void Main(string[] args)
{
var data = @"<Garage>
<Car id=""001"">
<Brand>Foo</Brand>
<Price>100</Price>
</Car>
<Car id=""002"">
<Brand>Bar</Brand>
<Price>130</Price>
</Car>
<Car id=""003"">
<Brand>Re</Brand>
<Price>110</Price>
</Car>
</Garage>";
var xml = XElement.Parse(data);
var carsInRange = xml.XPathSelectElements("/Car[Price > 100 and Price <= 120]");
Console.WriteLine(carsInRange.Count());
var cars = xml.Elements("Car");
var carsInRange2 = from c in cars
let price = (decimal)c.Element("Price")
where price > 100 && price <= 120
select c;
Console.WriteLine(carsInRange2.Count());
Console.ReadKey();
}
}