2010-10-21 28 views
11

Câu hỏi của tôi liên quan đến việc tạo điều kiện XElements, tức là, nếu một số điều kiện được đáp ứng, hãy tạo XElement, nếu không, bỏ qua việc tạo XElement? Tại thời điểm này, tôi có thể tạo XElements trống, và sau đó loại bỏ tất cả các phần tử trống, bằng cách kiểm tra, nếu IsEmpty là đúng, nhưng bằng cách nào đó không cảm thấy đúng ...XDocument: Điều kiện tạo XElement mới

Tôi cảm thấy, đó là một ví dụ nhỏ có thể là theo thứ tự:

XDocument doc = new XDocument(new XDeclaration("1.0","utf-8","yes"), 
new XElement("Books", 
    new XElement("Book", new XElement("Title", "Essential LINQ"), new XElement("Author", "Charlie Calvert,Dinesh Kulkarni")), 
    new XElement("Book", new XElement("Title", "C# in Depth"), new XElement("Author", "Jon Skeet")), 
    new XElement("Book", new XElement("Title", "Some Title"), new XElement("Author", "")) 
    )); 

Hãy tưởng tượng, rằng "tác giả" -element là một yếu tố bắt buộc, và nếu chúng ta không biết tác giả, chúng ta chỉ đơn giản là không đặt yếu tố đó trong XML - đơn giản, và theo ý kiến ​​của tôi, giải pháp xấu xí, là tạo ra phần tử, như một phần tử trống rỗng, và loại bỏ nó sau đó.

Bất cứ ai cũng biết làm thế nào để thực hiện một giải pháp thanh lịch, vì vậy để nói điều gì đó như thế này:

condition_met ? new XElement("Author",variable_with_value) : do not create element 

Trân trọng và cảm thấy tự do để yêu cầu thêm thông tin, nếu cần thiết.

Trả lời

27

Sử dụng thực tế là null được bỏ qua trong xây dựng:

condition_met ? new XElement("Author", variable_with_value) : null 

(. LINQ to XML là đầy đủ các quyết định ít thiết kế gọn gàng như thế này mà làm cho nó một niềm vui để làm việc với)

+1

Tuyệt vời Jon, cảm ơn bạn :) –

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