Tôi đang cố gắng để ngăn chặn có giá trị NULL khi tôi phân tích một tệp XML thành một đối tượng tùy chỉnh bằng cách sử dụng LINQ.C# ?? null coalescing toán LINQ
Tôi đã tìm thấy giải pháp tuyệt vời cho điều này trên Scott Gu's blog, nhưng vì một lý do nào đó, nó không hoạt động với các số nguyên với tôi. Tôi nghĩ rằng tôi đã sử dụng cú pháp tương tự nhưng có vẻ như tôi đang thiếu một cái gì đó. Oh và vì lý do nào đó nó hoạt động khi nút không rỗng.
Dưới đây là trích đoạn mã của tôi.
List<GrantAgresso> lsResult = (from g in xml.Element("root").Elements("Elementname")
select new GrantAgresso()
{
Year = (int?)g.Element("yearnode") ?? 0,
Subdomain = (string)g.Element("domainnode") ?? ""
}).ToList();
Các errormessage là:
Input string was not in a correct format.
Nếu ai có một đầu mối như những gì tôi đang làm sai, xin vui lòng giúp :)
Edit: mảnh XML (tên lạ nhưng đó là chứ không phải bằng sự lựa chọn)
<Agresso>
<AgressoQE>
<r3dim_value>2012</r3dim_value>
<r0r0r0dim_value>L5</r0r0r0dim_value>
<r7_x0023_province_x0023_69_x0023_V005>0</r7_x0023_province_x0023_69_x0023_V005>
<r7_x0023_postal_code_x0023_68_x0023_V004 />
<r7_x0023_country_x0023_67_x0023_V003>1004</r7_x0023_country_x0023_67_x0023_V003>
<r7_x0023_communitydistrict_x0023_70_x0023_V006>0</r7_x0023_communitydistrict_x0023_70_x0023_V006>
</AgressoQE>
</Agresso>
đặt cược của tôi là về cú pháp xml không chính xác. Bạn có thể hiển thị nội dung xml không? Toán tử kết hợp là đúng và nếu nó không phải là nó sẽ không ném lỗi này (nó không liên quan gì đến chuỗi) –
Bài tập 'Year' hoặc' Subdomain' có ném ngoại lệ không? Bạn có thể thử nhận xét một trong các dòng để xem liệu ngoại lệ có biến mất hay không. – Mizipzor
Tôi đã thêm một nút xml vào bài đăng của mình. Đây là nút trống (bắt đầu bằng r7_) kích hoạt ngoại lệ. Mã tôi đã sử dụng để lấy nó giống như những gì tôi đã sử dụng trong năm. – Nielsm