2010-07-20 25 views
7

Vì vậy, những gì tôi đang làm là sử dụng một tài liệu xml để xác định thứ tự mà trong đó một số tập lệnh SQL cần phải được chạy bởi một bản cập nhật cơ sở dữ liệu.Thứ tự của các mục được đọc từ một XDocument, bởi LINQ, Đảm bảo?

XML theo định dạng này

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

Vì vậy, các lớp mà thực hiện tất cả các sql tập tin trên cơ sở dữ liệu nhìn này thay đổi đó là kết nối và thực thi tập tin từ thư mục tùy thuộc vào những gì các tập tin cấu hình đã nói với nó làm.

Bây giờ câu hỏi của tôi là thế này:

Hãy nói rằng tôi có một tài liệu rằng có 4 Database nút, và mỗi người trong số họ có n số Folder nút bên trong với một loại file nút bên trong đó.

Có logic của tôi cho rằng nếu trong vòng lặp For Each qua Database nút mà tôi đã lấy ra thành một XElement sử dụng database.Elements("Database") rằng họ sẽ được kéo theo thứ tự mà chúng xuất hiện trong file xml? (tương tự cho các nút tập tin)

Theo như tôi đã có thể nói đây là trường hợp nhưng tôi chỉ muốn xác minh trước khi tôi bắt đầu sử dụng điều này trên cơ sở dữ liệu sản xuất.

Trả lời

9

Có, Elements trả về các phần tử theo thứ tự tài liệu. Từ the docs, trong "giá trị trả về":

Một IEnumerable<T> của XElement chứa những đứa trẻ của XContainer rằng có một phù hợp với XName, theo thứ tự tài liệu.

+0

làm bạn có một 'Có người hỏi một câu hỏi về LINQ' có ý nghĩa? – msarchet

3

Có, miễn là bạn không sử dụng PLINQ, và thậm chí sau đó bạn có thể yêu cầu nó cung cấp cho bạn các yếu tố theo thứ tự.

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

Các vấn đề liên quan