[英]LINQ to Objects - Assign list to property
我試圖寫一個LINQ to Objects / XML查詢來創建對象。 我有一個類,它具有SomeModelClass
IList
屬性。 SomeModelClass
還具有幾個IList
,需要從XML進行填充。
這是我第一次嘗試查詢多層嵌套XML,但不確定如何繼續。
當前,該代碼無法編譯,因為select new
似乎無法嵌套。 如何實際查詢嵌套的XML以創建具有對象列表和字符串列表的對象?
我已經展示了我嘗試過的代碼。
我有這樣的課:
public class MyClass
{
public string Name { get; set }
public IList<SomeModelClass> ModelList { get; set; }
}
這是我的模型課:
public class SomeModelClass
{
public IList<string> MyList1 { get; set; }
}
XML如下所示:
<someXml>
<section name="test">
<myModelClassXml>
<someValue value="string1" />
<someValue value="string2" />
<someValue value="string3" />
</myModelClassXml>
</section>
<section name="test2">
<myModelClassXml>
<someValue value="string1" />
</myModelClassXml>
</section>
</someXml>
我到目前為止的代碼:
var query = (from r in xdoc.Descendants("someXml").Descendants("section")
select new MyClass()
{
Name = r.Attribute("name").Value,
//Make list of SomeModelClass AND ALSO populate SomeModelClass's lists
select new SomeModelClass
{
MyList1 = What needs to be here?
}
});
這應該給您正確的結果:
List<MyClass> result = xdoc.Root.Descendants("section")
.Select(x => new MyClass
{
Name = (string)x.Attribute("name"),
ModelList = x.Elements("myModelClassXml")
.Select(y => new SomeModelClass
{
MyList1 = y.Elements("someValue")
.Select(z => (string)z.Attribute("value")).ToList()
}).ToList()
}).ToList();
首先找到section
所有后代,然后將其投影到MyClass
。 現在既然myModelClassXml
是直接孩子section
,我們可以使用Elements
,以進一步獲取someValue
元素及其價值屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.