我的MODS記錄的集合,看起來像這樣:如何讓這個LINQ to XML查詢更優雅?
<modsCollection>
<mods [namespaces etc] >
<genre authority="diva" type="contentType" lang="eng">Other academic</genre>
<genre authority="diva" type="contentType" lang="swe">Övrigt vetenskapligt</genre>
<name type="personal">
<namePart type="family">Svensson</namePart>
<namePart type="given">Sven</namePart>
<namePart type="date">1880-</namePart>
<role>
<roleTerm type="code" authority="marcrelator">aut</roleTerm>
</role>
<affiliation>Stockholms universitet, institutionen institutionen</affiliation>
</name>
[...]
</mods>
<mods/>
<mods/>
</modsCollection>
我的LINQ查詢來搜索一個特定的人有一定的作用附屬記錄大全看起來是這樣的:
XElement[] hits = (from record in x.Root.Elements(modsV3 + "mods").Elements(modsV3 + "name")
from r1 in record.Elements(modsV3+"namePart")
where
r1.HasAttributes &&
r1.Attribute("type").Value == "family" &&
r1.Value == familyName
from r2 in record.Elements(modsV3 + "namePart")
where
r2.HasAttributes &&
r2.Attribute("type").Value == "given" &&
r2.Value == givenName
from r3 in record.Elements(modsV3 + "role").Elements(modsV3+"roleTerm")
where
r3.HasAttributes &&
r3.Attribute("type").Value == "code" &&
r3.Value == "aut"
select r1.Parent.Parent).ToArray<XElement>();
我認爲這個查詢可以寫得更好。怎麼樣?
只是爲了clearyfy: 我正在尋找一個LINQ查詢,不同的條件,把在多個decendant節點一個很好的例子。 – Fontanka16 2010-03-01 13:29:22