如何填充一个Collection
本文关键字:Collection string 一个 何填充 填充 | 更新日期: 2023-09-27 18:02:46
嗯,我最近问了一个关于如何用自定义数据类型填充集合的问题,但是现在我不知道如何填充一个简单的字符串集合。也许有人愿意帮我。
我的简化类结构:
public class Accommodation
{
[XmlElement("Attribute")]
public Collection<string> Categories;
}
xml看起来像:
<Accommodation Id="f7cfc3a5-5b1b-4941-8d7b-f8a4a71fa530">
<Categories>
<Category Id=Time="1abc23"/>
<Category Id=Time="2abc34"/>
</Categories>
</Accommodation>
这就是我的linq语句现在的样子(我需要一些帮助:
)from x in doc.Descendants("Accommodation")
select new Accommodation()
{
Categories = new Collection<string>(x.Descendants("Categories").SelectMany(
categories => categories.Elements("Category").Select(
(string)x.Element("Categories").Element("Category").Attributes("Id")).ToList()))
}
对
看起来你只需要这个:
doc.Descendants("Accommodation")
.Select(x => new Accomodation { Categories =
x.Element("Categories")
.Elements("Category")
.Select(c => (string)c.Attribute("id")).ToList() });
如果Accommodation
是XML的根标记,则更简单:
var accomodation = new Accomodation
{
Categories = doc.Root.Element("Categories")
.Elements("Category")
.Select(c => (string)c.Attribute("id")).ToList()
}
我现在是这样解决的,如果有人好奇的话。但我确信我的解决方案可能会带来不必要的开销。
IEnumerable<Accommodation> temp =
(from x in doc.Descendants("Accommodation")
select new Accommodation()
{
Categories = new Collection<string>(
x.Descendants("Categories").SelectMany(categories
=> categories.Elements("Category").Select(category
=> category.Attribute("Id").Value ?? "")).ToList())
}).ToList();