我有以下课程
public class CountrySpecificPIIEntity
{
public string Country { get; set; }
public string CreditCardType { get; set; }
public String Api { get; set; }
public List<String> FilterList { get; set; }
}
我正在尝试使用linq to XMl查询来创建CountrySpecificPIIEntity类型的实例列表。 XML如下所示
<piisettings>
<country countrycode="DE">
<creditcardype credicardtype="mastercard">
<api api="INSERT_FILTERS">
<filters>
<filter>FIRSTNAME</filter>
<filter>HOUSENUMBER</filter>
<filter>ADDITIONALADDRESSINFO</filter>
<filter>EMAIL</filter>
</filters>
</api>
</creditcardype>
<creditcardype credicardtype="visa">
<api api="INSERT_FILTERS">
<filters>
<filter>STATE</filter>
<filter>EMAIL</filter>
</filters>
</api>
</creditcardype>
<creditcardype credicardtype="visa">
<api api="UPDATE_FILTERS">
<filters>
<filter>STATE</filter>
<filter>EMAIL</filter>
</filters>
</api>
</creditcardype>
</country>
<country countrycode="GB">
<creditcardype credicardtype="americanexpress">
<api api="INSERT_FILTERS">
<filters>
<filter>STREET</filter>
<filter>ZIP</filter>
<filter>CITY</filter>
<filter>STATE</filter>
<filter>EMAIL</filter>
</filters>
</api>
</creditcardype>
<creditcardype credicardtype="debank">
<api api="INSERT_FILTERS">
<filters>
<filter>IPADDRESSCUSTOMER</filter>
<filter>FIRSTNAME</filter>
<filter>SURNAME</filter>
<filter>HOUSENUMBER</filter>
<filter>STREET</filter>
<filter>ZIP</filter>
<filter>CITY</filter>
<filter>STATE</filter>
<filter>EMAIL</filter>
</filters>
</api>
</creditcardype>
</country>
</piisettings>
Linq to XML查询应该是什么?
答案 0 :(得分:2)
怎么样:
var qry = from country in XElement.Parse(xml).Elements("country")
from cc in country.Elements("creditcardype")
let api = cc.Element("api")
select new CountrySpecificPIIEntity
{
Country = (string)country.Attribute("countrycode"),
CreditCardType = (string)cc.Attribute("credicardtype"),
Api = (string)api.Attribute("api"),
FilterList = new List<string>(
from filter in api.Element("filters").Elements("filter")
select filter.Value)
};