是否可以重新加载XDocument并保留对其的所有现有引用? - c#

我有一个通过XDocument的静态Load方法(采用XmlReader)创建的XDocument,如下所示:

XDocument doc;

doc = XDocument.Load(reader);

现在,有必要在某个时候重新加载文档(进行更改后恢复到原始版本)。明显的方法似乎是doc = XDocument.Load(reader);。但是,这将创建一个新的XDocument,并且尽管我们已经(重新)加载了原始文档,但对doc的任何现有引用仍将指向旧的(更改的)版本。

有没有一种方法可以将XmlReader(甚至XML的字符串或byte []表示形式)加载到现有XDocument中,从而覆盖内容?还是我必须手动进行所有更改(删除其元素并添加新元素)?

参考方案

你应该能够做

 doc.Root.ReplaceWith( XElement.Load(fileName));

如果要保留处理指令,则可能需要先加载到临时XDocument中。

LINQ to SQL中的“无法识别的表达式节点数组索引linq”异常 - c#

这是我的LINQ,其中我将DateTime类型的字段与当前日期进行了比较- var srs = (from s in dcDistrict.ScheduledReportStatus where s.ReportConfigId.Equals(ConfigId) && s.Status.HasValue && s.Status…

LINQ to XML语法 - c#

我有一个简单的POCO类,用于保存从XML文件提取的数据,该XML文件定义如下:public class Demographics { public string FirstName { get; set; } public string LastName { get; set; } public string MiddleName { get; set; …

Linq to SQL获取多列 - c#

我正在开发一个asp.net MVC Web应用程序,其中使用Linq to Sql通过jquery和ajax从数据库获取结果。我的模型有以下代码 public IEnumerable<string> getComments(long problemID) { var comment = from c in _objectModel.Commen…

Java中的OrderByDecending(LINQ)等效项 - java

嗨,我是一名使用Java的C#开发人员。问题很简单:我如何才能将下面的c#代码写入Java并仍能正常工作:myCoffeeList.OrderByDescending(x => x.Name?.ToLower()?.Trim() == sender.Text.ToLower()?.Trim())); 我的sender.Text基本上是一个文本框。文本的…

LINQ RemoveAll代替循环 - c#

我有两个for循环,用于从列表中删除项目。我正在为这些循环寻找等效的LINQ语句for (Int32 i = points.Count - 1; i >= 0; i--) { for (Int32 j = touchingRects.Count - 1; j >= 0; j--) { if (touchingRects[j].HitTest(po…