Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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# Linq到Xml保存嵌套对象列表_C#_Linq To Xml - Fatal编程技术网

C# Linq到Xml保存嵌套对象列表

C# Linq到Xml保存嵌套对象列表,c#,linq-to-xml,C#,Linq To Xml,目前,我使用如下代码将XML文件加载到对象列表中 XDocument xmlDoc = XDocument.Load(path); List<ImportDefinition> importDefinitions = xmlDoc.Descendants("Root").Select(xElem => (ImportDefinition)xElem).ToList(); return importDefinitions; 这对于加载XML非常有效。现在

目前,我使用如下代码将XML文件加载到对象列表中

    XDocument xmlDoc = XDocument.Load(path);
    List<ImportDefinition> importDefinitions = xmlDoc.Descendants("Root").Select(xElem => (ImportDefinition)xElem).ToList();
    return importDefinitions;
这对于加载XML非常有效。现在,我想在做了一些编辑之后将这个对象列表保存回XML

我希望这样的事情能奏效

  XElement xml = new XElement("Root",
                             from p in ObjectList
                             select new XElement("File",RootObject
                                 ));
    }
    xml.Save("C:\\temp\\newimport.xml");
然而,这似乎只是输出这个

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <File>MyNamespace.RootObject</File>
  <File>MyNamespace.RootObject</File>
</Root>

MyNamespace.RootObject
MyNamespace.RootObject

看起来它没有使用加载文件时使用的自定义运算符来计算要保存的格式。将这些数据保存回XML的最佳方法是什么?它的格式与我阅读时的格式相同?

首先,您只向我们展示了用于从XElement解析的运算符。。。但即便如此,您显然在LINQ表达式中明确地调用了它。如果您想在构建XML时获得同等的效果,还需要明确:

XElement xml = new XElement("Root",
                            from p in ObjectList
                            select new XElement("File", (XElement) p));

就我个人而言,我会使用方法而不是运算符-ToXElement()和FromXElement()-我认为这样更清楚
ToXElement
将是一个实例方法
FromXElement
将是一种静态方法。这是我使用过很多次的一种模式,它总是很好地工作。

首先,您只向我们展示了用于从XElement解析的运算符。。。但即便如此,您显然在LINQ表达式中明确地调用了它。如果您想在构建XML时获得同等的效果,还需要明确:

XElement xml = new XElement("Root",
                            from p in ObjectList
                            select new XElement("File", (XElement) p));
就我个人而言,我会使用方法而不是运算符-ToXElement()和FromXElement()-我认为这样更清楚
ToXElement
将是一个实例方法
FromXElement
将是一种静态方法。这是我用过很多次的一种模式,而且一直都很好