C# Linq查询列表不是将数据放入列表,而是一个元素列表
我有以下查询(嵌套在较大的查询中): myns是一种XNamespace类型 XML树看起来像C# Linq查询列表不是将数据放入列表,而是一个元素列表,c#,linq-to-xml,C#,Linq To Xml,我有以下查询(嵌套在较大的查询中): myns是一种XNamespace类型 XML树看起来像 <offer> <paymentTypes> <paymentType>One String</paymentType> <paymentType>Another string</paymentTYpe> </paymentTypes> </offer> 而
<offer>
<paymentTypes>
<paymentType>One String</paymentType>
<paymentType>Another string</paymentTYpe>
</paymentTypes>
</offer>
而不是
PaymentType[0] = "OneString"
PaymentType[1] = "AnotherString"
我弄不清我做错了什么。有什么想法吗?您的示例中
的值是“一个字符串另一个字符串”
您需要分别从每个
中选择值
:
var query = from paymenttype in offer.Element(myns + "paymentTypes")
.Elements(myns + "paymentType")
select paymenttype.Value;
List<string> PaymentType = query.ToList();
这将查找所有paymentType元素
var paymentTypes = (from paymentType
in offer.Descendants(myns + "paymentType")
select paymentType.Value).ToList();
如果您在调试器中查看它,则更容易判断您得到的是paymentTypes元素。如果您知道只有一个,最简单的更改是在末尾添加.Elements()以获得子元素:
var results = (from paymenttype in offer.Elements("paymentTypes").Elements()
select paymenttype.Value).ToList();
这就得到了要查找的两个字符串。是的,对于嵌套查询,我无法完成第一部分……但是,我需要两个“from”语句。这就解决了!!
var query = from paymenttype in offer.Element(myns + "paymentTypes")
.Elements(myns + "paymentType")
select paymenttype.Value;
List<string> PaymentType = query.ToList();
var query = from paymenttypes in offer.Elements(myns + "paymentTypes")
from paymenttype in paymenttypes.Elements(myns + "paymentType")
select paymenttype.Value;
List<string> PaymentType = query.ToList();
var paymentTypes = (from paymentType
in offer.Descendants(myns + "paymentType")
select paymentType.Value).ToList();
var results = (from paymenttype in offer.Elements("paymentTypes").Elements()
select paymenttype.Value).ToList();