c# - 使用 LINQ 解析 XML 并填充现有对象的属性而不是创建新的属性

标签 c# xml linq linq-to-xml

我现在有以下代码:

Tutorial tutorial =
  (from tutorial in xmlDoc.Descendants("Tutorial")
   select new Tutorial
   {
     Author = tutorial.Element("Author").Value,
     Title = tutorial.Element("Title").Value,
     Date = DateTime.Parse(tutorial.Element("Date").Value),
   }).First();

myTutorial.Author = tutorial.Author;
myTutorial.Title = tutorial.Title;
myTutorial.Date = tutorial.Date;

myTutorial 是从另一个方法传递过来的。下面的代码必须“填充”它。

问题是:有没有一种方法可以创建 LINQ 查询,该查询将值分配给现有对象的属性,而不是创建一个新对象。

我希望我的代码看起来像这样:

   Tutorial tutorial =
  (from tutorial in xmlDoc.Descendants("Tutorial")
   select myTutorial
   {
     Author = tutorial.Element("Author").Value,
     Title = tutorial.Element("Title").Value,
     Date = DateTime.Parse(tutorial.Element("Date").Value),
   });

我遇到的问题是: 我有一个对象,它最初只设置了一半的属性,后来我需要填充其余的属性。这需要异步完成。

我的方法: 我使用 WebClient 的异步方法 DownloadStringAsync 下载 XML 文件。在事件处理程序中,我不想用它缺少的属性填充对象。这就是为什么我想直接将值传递给我的对象而不是创建一个新对象。

如果这不是最好的方法,请告诉我。

最佳答案

好吧,这是纯粹的邪恶:

var dropThis =
  (from tutorial in xmlDoc.Descendants("Tutorial")
   select new
   {
     Author = (myTutorial.Author = (string)tutorial.Element("Author")),
     Title = (myTutorial.Title = (string)tutorial.Element("Title")),
     Date = (myTutorial.Date = (DateTime)tutorial.Element("Date")),
   }).First();

关于c# - 使用 LINQ 解析 XML 并填充现有对象的属性而不是创建新的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4397740/

相关文章:

c# - 使用 LINQ 大写对象列表

c# - 如何查找时间是否在一组范围内?

c# - 使用自定义注册表单时 DNN 损坏的用户名

c# - 初学者WCF实现问题

c# - 将 LPWSTR * 字符串指针数组转换为 C#

Python - 编写Xml(格式化)

c# - 什么是 PartialEvaluationExceptionExpression 以及如何修复它?

c# - 通过asp.net从控制台读取输出

c# - 使用 C#,如何关闭格式错误的 XML 标记?

PHP 字符串未格式化为有效的 XML