代码之家  ›  专栏  ›  技术社区  ›  msarchet

Linq是否保证从xdocument读取项目顺序?

  •  7
  • msarchet  · 技术社区  · 14 年前

    所以我要做的是使用一个XML文档来确定数据库更新运行某些SQL脚本的顺序。

    XML遵循这种格式

    <ScriptRules>
        <Database databaseName = “string”>
            <Folder folderPath = “string” executeAllFiles = boolean>
                <file order=”first or last”>“Filename”</file>
            </Folder>
        </Database>
    </ScriptRules>
    

    所以执行所有 sql 数据库上的文件会查看它的连接是否发生了更改,并根据配置文件的指示执行文件夹中的文件。

    现在我的问题是:

    假设我有一个文件有4个 Database 节点,每个节点都有 n Folder 内部节点的分类 file 里面的节点。

    我是否有逻辑地认为 For Each 环过 数据库 我检索到的节点 XElement 使用 database.Elements("Database") 是否按它们在XML文件中的显示顺序提取它们?(文件节点相同)

    据我所知,这是事实,但我只是想在开始在生产数据库上使用它之前进行验证。

    2 回复  |  直到 14 年前
        1
  •  9
  •   Jon Skeet    14 年前

    对, Elements 按文档顺序返回元素。从 the docs ,在“返回值”中:

    IEnumerable<T> 属于 XElement 包含的子级 XContainer 有匹配的 XName , 按文档顺序。

        2
  •  3
  •   Nate Zaugg    14 年前

    是的,只要你不使用plinq,甚至你可以要求它按顺序给你元素。

     var orderedCities = (from city in cities.AsParallel().AsOrdered()
                                     where city.Population > 10000
                                     select city)
                                    .Take(1000);
    

    http://msdn.microsoft.com/en-us/library/dd460677.aspx