Sự cố: trả lại tất cả hồ sơ where
Jon Doe
=<bus_contact>
HOẶC<bus_sponsor>
.Làm thế nào để thêm OR điều kiện trong LINQ trong khi truy vấn XML?
Bản ghi trả về mã hiện tại 1, vì vậy những sửa đổi nào được yêu cầu trả về bản ghi 1 và 2 chỉ bằng một truy vấn ?.
XML
<root>
<row>
<project_id>1</project_id>
<project_name>Name1</project_name>
<bus_contact>Jon Doe</bus_contact>
<bus_sponsor>Bruce Wayne</bus_sponsor>
</row>
<row>
<project_id>2</project_id>
<project_name>Name2</project_name>
<bus_contact>Peter Parker</bus_contact>
<bus_sponsor>Jon Doe</bus_sponsor>
</row>
</root>
C#
class Program
{
static void Main (string[] args)
{
XElement main = XElement.Load ("master_list.xml");
var results = main.Descendants ("row")
.Descendants ("bus_contact")
.Where (e => e.Value == "Jon Doe")
.Select (e => e.Parent)
.Select (e => new {
project_id = e.Descendants ("project_id").FirstOrDefault().Value,
project_name = e.Descendants ("project_name").FirstOrDefault().Value
});
foreach (var result in results)
Console.WriteLine ("{0}, {1}", result.project_id, result.project_name);
Console.ReadLine();
}
}
Sửa: Đây không phải là chính xác cùng một vấn đề như đã chỉ ra trong các liên kết trùng lặp càng tốt. Có, nó một phần đề cập đến điều đó nhưng như một người mới bắt đầu nhận được một câu trả lời với bối cảnh thích hợp, mà câu trả lời được chấp nhận cung cấp, là khá hữu ích.
trùng lặp có thể xảy ra của [Nhiều con cháu các loại LINQ] (http://stackoverflow.com/questions/2059488/multiple-descendants-types-linq) –