まだLinqを学習していて、同じ選択で要素と別の子孫を取得しようとすると問題が発生しました。解決策を探しましたが、探しているものが見つからず、解決策を思いつきました。しかし、それは正しい方法ですか?どういうわけか、それは機能しますが、それは正しいと感じます.
次の XML 構造があります。
<Tables>
<Table>
<SourceTable>WrittenRecordsTable</SourceTable>
<Researcher>Fred Blogs</Researcher>
<QuickRef>cwr</QuickRef>
<TableType>WrittenRecords</TableType>
<FieldMapping>
<RecordID>ID</RecordID>
<StartYear>StartYear</StartYear>
<EndYear>EndYear</EndYear>
<LastName>LastName</LastName>
<Title>Title</Title>
<Subject>Subject</Subject>
<Description>Reference</Description>
</FieldMapping>
</Table>
</Tables>
および次の Linq to XML:
var nodes = (from n in xml.Descendants("FieldMapping")
select new
{
SourceTable = (string)n.Parent.Element("SourceTable").Value,
RecordID = (string)n.Element("RecordID").Value,
StartYear = (string)n.Element("StartYear").Value,
EndYear = (string)n.Element("EndYear").Value,
LastName = (string)n.Element("LastName").Value,
Title = (string)n.Element("Title").Value,
Subject = (string)n.Element("Subject").Value
}).ToList();
間違っていると感じるのは、 SourceTable要素を取得する方法です。心配しすぎですか、それとももっと良い方法はありますか? また、クエリよりも C# 式を使用する方が良いですか?