使用LINQ查询填充类

时间:2016-03-20 11:13:16

标签: c# xml linq

我需要使用XML文件填充类。

Dictionary<string, CustomStruct>

我的问题是如何填充struct

这是public struct Stat { public int StatValue { get; set; } public int StatLast { get; set; } public Stat(int statValue, int statLast) { StatValue = statValue; StatLast = statLast; } }

string loadDataPath = Application.persistentDataPath + "/saveData.xml";
XDocument loadData = XDocument.Load(loadDataPath);

var query = from item in loadData.Elements("Ship")
            select new Ship()
            {
                Name = (string) item.Element("Name"),
                Owner = (string) item.Element("Owner"),
                Aim = item.Elements("Aim") // <-- Here lies the problem.
                // ...
            };

我的LINQ查询如下所示:

XElements

对于每个目标Aim TKey = XML Type Aim TValue.StatValue = XML Value Aim TValue.StatLast = XML Last ,我需要使用以下方法填充Aim字典:

{{1}}

2 个答案:

答案 0 :(得分:1)

使用ToDictionary()扩展方法实现您的目标:

struct

另外,我必须将class更改为Stat struct才能使其正常工作。

如果您想使用public struct Stat { public int StatValue { get; set; } public int StatLast { get; set; } public Stat(int statValue, int statLast) : this() { StatValue = statValue; StatLast = statLast; } } ,您需要稍微修改一下:

{{1}}

来自this answer

答案 1 :(得分:1)

这是正确的LINQ to XML语法:

Aim = item.Elements("Aim").ToDictionary(
    e => (string)e.Element("Type"),
    e => new Stat((int)e.Element("Value"), (int)e.Element("Last")))