gpt4 book ai didi

c# - 将 IEnumerable 转换为 List

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:44 26 4
gpt4 key购买 nike

我已经看到几个线程(like this onethis one)显示如何转换 XDocumentList<>简单对象,如字符串。但是,我正在为如何使用嵌套对象执行此操作而苦苦挣扎。

这是 XML 的样子...

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
.... other stuff removed to make reading easier ....
<ListOfCustomers>
<Customer>
<CustomerName>A TO Z Fubar</CustomerName>
<AccountNumber>A TO001</AccountNumber>
<BillingAddress>
<Address1>11900 W FUBAR AVE</Address1>
<Address2/>
<City>FUBAR</City>
<State>CO</State>
<Zip>80215</Zip>
<Country>US</Country>
</BillingAddress>
<ShippingAddress>
<Address1>11900 W FUBAR AVE</Address1>
<Address2/>
<City>FUBAR</City>
<State>CO</State>
<Zip>80215</Zip>
<Country>US</Country>
</ShippingAddress>
</Customer>
<Customer>....</Customer>
<Customer>....</Customer>
</ListOfCustomers>

我从那个 XML 创建了这个类,现在我需要得到一个 List<>的...

public class DistributorCustomer
{
public string CustomerName { get; set; }
public string AccountNumber { get; set; }
public BillingAddress BillingAddress { get; set; }
public ShippingAddress ShippingAddress { get; set; }
}


public class BillingAddress
{
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
public string Country { get; set; }
}

public class ShippingAddress
{
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
public string Country { get; set; }
}

我在 Azure 博客存储触发器函数中执行此操作。我已经走到这一步了:

XDocument xDoc = XDocument.Load(blobFile);
IEnumerable<XElement> customers = xDoc.Descendants("Customer");

很简单! customers确实是整个IEnumerable XML 文件中的所有客户。现在我只需要从

IEnumerable<XElement>

给一个

List<DistributorCustomer>

那个,我不知道该怎么做。从其他线程来看,这应该可以通过 LINQ to XML 和 Loop over customers 实现。不需要。

最佳答案

像这样使用 Linq 解析 XML 可能非常强大,也许不是最好的方法(自从我使用 XML 以来已经有一段时间了)但这是一种使用 Linq Select 将元素投影到您的类型中的方法:

var customers = xDoc.Descendants("Customer")
.Select(c => new DistributorCustomer
{
CustomerName = c.Element("CustomerName").Value,
AccountNumber = c.Element("AccountNumber").Value,
BillingAddress = new BillingAddress
{
Address1 = c.Element("BillingAddress").Element("Address1").Value,
// etc...
}
});

关于c# - 将 IEnumerable<XElement> 转换为 List<nested object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57274907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com