0

我有一个这样的xml文件:

  <CommissionTypes>
    <Type>CPA</Type>
    <Lender>
      <Seq>001</Seq>
      <PostUrl>http://www.mysite.com</PostUrl>
    </Lender>
  </CommissionTypes>
</Lenders>

得到这样的数据:

var config = XDocument.Load(xml);

我需要将它映射到一个类集合,该类的结构如下:

public class Lender
{
    public string Type { get; set; }
    public int Seq { get; set; }
    public string PostUrl { get; set; }

    public void Lender(string type, int seq, string postUrl)
    {
        Type = type;
        Seq = seq;
        PostUrl = postUrl;
    }
}

一段时间以来,我一直在尝试使用 linq 执行此操作,但尚未成功。我想要做的是检索类型为“CPA”或任何其他类型的所有贷方。

有什么建议吗?

// * 更新 * //

下面的更新是我目前所在的位置。它不起作用,得到一个“对象引用未设置为实例”错误 wgere 箭头是。

<CommissionTypes>
  <Type type="CPA">
    <Lender>
      <Seq>001</Seq>
      <PostUrl>http://www.mysite.com</PostUrl>
    </Lender>
  </Type>
</CommissionTypes>

    public static List<Lender> GetLenders(string xml)
    {
        var myXml = XDocument.Load(xml);

        var lenders = new List<Lender>();

        lenders = (from type in myXml.Descendants("Type")
               where type.Attribute("type").Value == "CPA"
        ===>   select new Lender(
                "CPA",
                type.Element("Seq").Value.ConvertTo<int>(),
                type.Element("PostUrl").Value)).ToList();

        return lenders;
    }
4

1 回答 1

1

您的查询不正确,因为Seq它不是元素的直接子Lender元素。

public static List<Lender> GetLenders(string xml)
{
    var myXml = XDocument.Load(xml);

    var lenders = new List<Lender>();

    lenders = (from type in myXml.Descendants("Type")
               where type.Attribute("type").Value == "CPA"
               from lender in type.Elements("Lender")
               select new Lender(
                    "CPA",
                    (int)lender.Element("Seq"),
                    (string)lender.Element("PostUrl"))).ToList();

    return lenders;
}
于 2013-04-10T19:43:14.353 回答