2010-07-20 12 views
7

Entonces, lo que estoy haciendo es usar un documento xml para determinar el orden en que ciertas secuencias de comandos SQL deben ser ejecutados por una actualización de base de datos.¿El pedido de elementos leídos de un XDocument, por LINQ, está garantizado?

El XML sigue este formato

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

Así la clase que ejecuta todos los archivos sql en la base de datos se ve en este en los cambios de su conexión y ejecuta archivos de las carpetas en función de lo que el archivo de configuración ha dicho que que hacer.

Ahora mi pregunta es la siguiente:

Digamos que tengo un documento que tiene 4 Database nodos, y cada uno de ellos tienen n número de nodos en el interior Folder con un surtido de file nodos dentro de ese.

¿Es lógico por mi parte suponer que si dentro de un bucle For Each lo largo de los nodos Database que he recuperado en un XElement usando database.Elements("Database") que se necesiten en el orden en que aparecen en el archivo XML? (lo mismo para los nodos de archivos)

Por lo que he podido decir, este es el caso, pero solo quería verificar antes de comenzar a usar esto en las bases de datos de producción.

Respuesta

9

Sí, Elements devuelve los elementos en orden de documento. De the docs, en el "valor de retorno":

Un IEnumerable<T> de XElement que contiene los hijos de la XContainer que tienen un juego XName, en orden de documento.

+0

¿tiene un 'Alguien hizo una pregunta sobre LINQ' sentido? – msarchet

3

Sí, siempre que no utilice PLINQ, y aun así puede pedirle que le proporcione los elementos en orden.

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

Cuestiones relacionadas