LINQ到XML的速度

本文关键字:速度 XML LINQ | 更新日期: 2023-09-27 18:21:45

快速提问,下面一行应该很容易解释:

doc.Descendants("DOB").Select(dob => dob.ToString()).All(dob => DateTime.Parse(dob.ToString()) != DateTime.Parse(processing.DateOfBirth))

但以防万一,如果node(DOB)的任何值与processing.dateofbirth,因为如果xml中没有出生日期,我需要将其添加到xml中。

我的两个问题是

使用linq到xml,这是实现这一目标的最短代码量吗(我想不是)

这将针对数百万条记录运行,是否有更有效的方法来实现这一点

编辑

对不起,我沟通不畅。XML很小。数据库中有数百万行代表一个人,其中一列PersonXml只有name、dob、number和其他一些内容。行通过SqlDataReader读取并验证/更新,这是其中的一部分。

LINQ到XML的速度

1)这里不确定,至少我想不出更短的方法来写它。

2) 如果格式始终相同,则可以考虑直接处理数据。要么处理字符串,要么直接处理流。将字符串解析为XDoc总是会减少其份额。您提到的xml文件非常小,可能不会更改。

对于一个我正在写一个xml文件的项目,这个文件太大了,无法保存在内存中,我已经写了一个类(实际上在SO上找到了该代码的一部分),它在文件流上工作,并逐字节查找匹配的模式。在您的情况下,这可能是一种糟糕的风格,使用起来有点不可信,但如果速度是一个问题,那么它随时都会击败XDocument。

-edit-阅读您的编辑,我认为速度并不是您真正关心的问题,这是一项您可能只需要做一次就可以纠正一些旧数据的任务?在这种情况下,我建议你坚持你的解决方案,也许可以使用Taskfactory来生成线程,为你从数据库收到的每一行运行一个新任务,并让它整夜运行。在我看来,最简单、最安全的解决方案