2014-10-17 49 views
0

以下是我的xml文件。我必須得到每個頁面提及的字段和每個逗號分隔字符串的類型。請在如何使用LINQ使用Linq查詢記錄的Xml文件

實例進行幫助:如果我想「類型= customFields」爲「第1頁」規定,必須得到逗號輸出分離 專案編號,僱員,EmployeeName,hasExpiration等

<Pages> 
<Page Name="Page1" > 
<Type TypeID="customfields"> 
    <Field>ProjectID</Field> 
    <Field>EmployeeID</Field> 
    <Field>EmployeeName</Field> 
    <Field>HasExpiration</Field> 
    <Field>EndDate</Field> 
</Type> 
<Type TypeID="Directfields"> 
    <Field>ProjectID</Field> 
    <Field>EmployeeID</Field> 
    <Field>EmployeeName</Field> 
    <Field>HasExpiration</Field> 
    <Field>EndDate</Field> 
    <Field>IsInUpdateMode</Field> 
    <Field>TimesheetSpendLimit</Field> 
</Type> 
</Page> 
    <Page Name="Page2" > 
    <Type TypeID="customfields"> 
    <Field>ProjectID</Field> 
    <Field>EmployeeID</Field> 
    <Field>EmployeeName</Field> 
    <Field>HasExpiration</Field> 
    <Field>EndDate</Field> 
    <Field>IsInUpdateMode</Field> 
    <Field>TimesheetSpendLimit</Field> 
</Type> 
<Type TypeID="Directfields"> 
    <Field>ProjectID</Field> 
    <Field>EmployeeID</Field> 
    <Field>EmployeeName</Field> 
    <Field>HasExpiration</Field> 
    <Field>EndDate</Field> 
    <Field>IsInUpdateMode</Field> 
    <Field>TimesheetSpendLimit</Field> 
</Type> 
    </Page> 
</Pages> 
+1

檢查這個帖子,它可能有幫助:http://developmentpassion.blogspot.com/2014/09/how-to-deserialize-xml-using-linq.html – 2014-10-17 09:56:04

回答

3

你可以這樣說:

var Result = from a in element.Descendants("Page") 
      from b in a.Descendants("Type") 
      select new 
      { 
       Page = a.Attribute("Name").Value, 
       Type = b.Attribute("TypeID").Value, 
       Fields = String.Join(",", b.Elements("Field").Select(x => x.Value)) 
      }; 
foreach (var item in Result) 
{ 
    Console.WriteLine(String.Format("Page = {0}:Type={1}:Fields:{2}", item.Page, item.Type, item.Fields)); 
} 

WORKING FIDDLE

檢查我 this blog article爲以及更多。