C# Lambda 方法语法获取与 LINQ to XML 中的模式匹配的属性值
C# Lambda Method syntax to obtain attribute values that match pattern in LINQ to XML
我有以下 XML 片段,想提取不为零的状态属性值。我可以获得符合条件的元素,但我真正想要的是状态属性的值。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<Auth status = "0">Moo</Auth>
<Add status = "817">Cow</Add>
<Add status = "888">Brown</Add>
<Add status = "123">Dog</Add>
</response>
此 lambda 语法返回匹配元素列表,但我需要的是状态值列表,而不是具有这些值的元素列表。
var errcodeList = xml.Descendants("Add").Where(x => x.Attribute("status").Value != "0").Attributes("status");
您可以使用 Select 将集合投影到您想要的特定结果。例如:
var errcodeList = xml.Descendants("Add").Where(x => x.Attribute("status").Value != "0").Select(x => x.Attribute("status").Value);
当您使用 Select
时,您将 IEnumerable
投影到另一种形式,在本例中它是 x.Attributes("status").Value
的列表
var errcodeList = xml.Descendants("Add")
.Where(x => x.Attribute("status").Value != "0")
.Select(x => x.Attributes("status").Value);
我有以下 XML 片段,想提取不为零的状态属性值。我可以获得符合条件的元素,但我真正想要的是状态属性的值。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<Auth status = "0">Moo</Auth>
<Add status = "817">Cow</Add>
<Add status = "888">Brown</Add>
<Add status = "123">Dog</Add>
</response>
此 lambda 语法返回匹配元素列表,但我需要的是状态值列表,而不是具有这些值的元素列表。
var errcodeList = xml.Descendants("Add").Where(x => x.Attribute("status").Value != "0").Attributes("status");
您可以使用 Select 将集合投影到您想要的特定结果。例如:
var errcodeList = xml.Descendants("Add").Where(x => x.Attribute("status").Value != "0").Select(x => x.Attribute("status").Value);
当您使用 Select
时,您将 IEnumerable
投影到另一种形式,在本例中它是 x.Attributes("status").Value
var errcodeList = xml.Descendants("Add")
.Where(x => x.Attribute("status").Value != "0")
.Select(x => x.Attributes("status").Value);