問題:返回所有記錄where
Jon Doe
=<bus_contact>
或<bus_sponsor>
。如何在查詢XML時在LINQ中添加OR條件?
當前代碼返回記錄1,因此需要進行哪些修改才能使用一個查詢返回記錄1和2?
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();
}
}
編輯:這不正是爲可能的重複鏈接指出了同樣的問題。是的,它部分地提到了這一點,但作爲一個初學者,通過適當的上下文來獲得答案,這是接受的答案提供的,是相當有幫助的。
[多個子孫類型的可能的複製有各種(
bus_contact
,bus_sponsor
等),可以簡化整個查詢的唯一一個子元素項目linq](http://stackoverflow.com/questions/2059488/multiple-descendants-types-linq) –