Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何序列化列表<;T>;使用LINQtoXML转换XML?_C#_Xml_Serialization_Linq To Xml - Fatal编程技术网

C# 如何序列化列表<;T>;使用LINQtoXML转换XML?

C# 如何序列化列表<;T>;使用LINQtoXML转换XML?,c#,xml,serialization,linq-to-xml,C#,Xml,Serialization,Linq To Xml,我有这个通用列表 List<zil> listKD = new List<zil> { new zil{day="Mon",c="1",S1="08:00",S2="08:40",S3="08:47"}, new zil{day="Mon",c="2",S1="08:50",S2="09:30",S3="09:37"}, new zil{day="Mon",c="3",S

我有这个通用列表

   List<zil> listKD = new List<zil>
            {
            new zil{day="Mon",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Mon",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Mon",c="3",S1="09:40",S2="10:20",S3="10:27"},
            new zil{day="Mon",c="4",S1="10:30",S2="11:10",S3="11:17"},
            new zil{day="Tue",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Tue",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Wed",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Wed",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Thu",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Thu",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Thu",c="3",S1="09:40",S2="10:20",S3="10:27"},
            new zil{day="Fri",c="1",S1="08:00",S2="08:40",S3="08:47"},
            new zil{day="Fri",c="2",S1="08:50",S2="09:30",S3="09:37"},
            new zil{day="Fri",c="3",S1="09:40",S2="10:20",S3="10:27"},
            new zil{day="Fri",c="4",S1="10:30",S2="11:10",S3="11:17"},
            };

谢谢…

我想你没有按天分组;也许是这样的:

var el = new XElement("Days",
    from z in listKD
    group z by z.day into tmp
    select new XElement("Day",
        new XAttribute("id", tmp.Key),
        from item in tmp
        select new XElement("clock",
            new XAttribute("id", item.c),
            new XElement("s1", item.S1),
            new XElement("s2", item.S2),
            new XElement("s3", item.S3))
            ));
string s = el.ToString(); // or save etc
        XElement parsed = XElement.Parse(s);
        var newList = (from day in parsed.Elements("Day")
                       from clock in day.Elements("clock")
                       select new zil
                       {
                           day = (string)day.Attribute("id"),
                           c = (string)clock.Attribute("id"),
                           S1 = (string)clock.Element("S1"),
                           S2 = (string)clock.Element("S2"),
                           S3 = (string)clock.Element("S3")
                       }).ToList();

更新再评论;要反转它,请执行以下操作:

var el = new XElement("Days",
    from z in listKD
    group z by z.day into tmp
    select new XElement("Day",
        new XAttribute("id", tmp.Key),
        from item in tmp
        select new XElement("clock",
            new XAttribute("id", item.c),
            new XElement("s1", item.S1),
            new XElement("s2", item.S2),
            new XElement("s3", item.S3))
            ));
string s = el.ToString(); // or save etc
        XElement parsed = XElement.Parse(s);
        var newList = (from day in parsed.Elements("Day")
                       from clock in day.Elements("clock")
                       select new zil
                       {
                           day = (string)day.Attribute("id"),
                           c = (string)clock.Attribute("id"),
                           S1 = (string)clock.Element("S1"),
                           S2 = (string)clock.Element("S2"),
                           S3 = (string)clock.Element("S3")
                       }).ToList();
要筛选到特定日期,请执行以下操作:

                       from day in parsed.Elements("Day")
                       where (string)day.Attribute("id") == "Mon"
                       from clock in day.Elements("clock")
                       ...
[XmlArray(“Zils”),XmlArrayItem(“Zil”,typeof(Zil))]
public List listKD=新列表();

zXml.Save(…)到底产生了什么?我知道有一个问题…但不确定是什么问题。注意你的变量名;在您的列表中,“day”是小写的,而在linqtoxml中,您使用g.day-现在是什么??小写或大写名称区分大小写!s1、s2和S3也是如此。您正在为
列表KD中的每个项目创建
元素。你可能想把同一天的元素组合成一个
元素,Marc Gravell已经给出了答案。如果我昨天发现这个的话。。。我必须通过循环列表来解决的一个问题的简单而好的解决方案。好的。如何从xml文件中读取当天的时钟和[s1、s2、s3、s1…]。examp day=mon。。。