C# Linq查询列表不是将数据放入列表,而是一个元素列表

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> 而

我有以下查询(嵌套在较大的查询中):

myns是一种XNamespace类型

XML树看起来像

<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();