我有一個來自正在運行的進程的XML輸出文件,它需要根據我們數據庫中的一系列表格編輯的各個字段的內容。例如,什麼是包含在使用LINQ編輯XML輸出
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfUserReportPreviewListDto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UserReportPreviewListDto>
<ExtensionData />
<Id>previewReportFieldsId</Id>
<Field0>-7</Field0>
<Field1>L</Field1>
<Field2>Lab Work Complete</Field2>
<Field3>False</Field3>
<Field4>LabWorkComplete</Field4>
<Field6>False</Field6>
</UserReportPreviewListDto>
<UserReportPreviewListDto>
<ExtensionData />
<Id>previewReportFieldsId</Id>
<Field0>-6</Field0>
<Field1>S</Field1>
<Field2>Sent to Lab</Field2>
<Field3>False</Field3>
<Field4>SentToLab</Field4>
<Field6>False</Field6>
</UserReportPreviewListDto>
<UserReportPreviewListDto>
<ExtensionData />
<Id>previewReportFieldsId</Id>
<Field0>-5</Field0>
<Field1>V</Field1>
<Field2>Void</Field2>
<Field3>False</Field3>
<Field4>Void</Field4>
<Field6>True</Field6>
<Field7>12/11/2013</Field7>
<Field9>769</Field9>
</UserReportPreviewListDto>
需要字段4從LabWorkComplete(tblEnum.FieldTypeDesc)改爲2(tblEnum.FieldTypeNum)。
我對使用LINQ很陌生,甚至沒有完全確定它是最好的路線。我已經在項目中創建了一個DataSet,其中一個DataTable從數據庫中填充了我需要處理的內容。而且......就我所知。現在我正在使用一大堆繁瑣的If語句來完成這個任務,並且我認爲這個途徑可能比這樣的語句集合更有效率。
var xe = XElement.Load("serializer.xml");
string field4Value = xe.XPathSelectElement(@"/UserReportPreviewListDto/Field4").Value;
if (field4Value == "Incomplete")
{
xe.XPathSelectElement(@"/UserReportPreviewListDto/Field4").Value = "0";
}
else if (field4Value == "SendToLab")
{
xe.XPathSelectElement(@"/UserReportPreviewListDto/Field4").Value = "1";
}
else if (field4Value == "LabWorkComplete")
{
xe.XPathSelectElement(@"/UserReportPreviewListDto/Field4").Value = "2";
}
所以那就是我的位置。如果LINQ不是最好的途徑,那會是什麼?如果是的話,最好的辦法是什麼?此外,可以推薦使用這些方面的任何特別有用的資源,我寧願學習代碼而不是複製代碼。畢竟,我不想在下週再次問這個問題。
這很奇怪,是的。但它是由客戶提供給我們的,那麼你能做什麼,呃? 你有什麼建議的代碼示例嗎?我想它並不像聽起來那麼複雜,但看到它寫出來會是巨大的幫助。 – Eiketsu 2014-12-05 17:27:17
@Eiketsu:檢查我的答案(編輯包含代碼示例)。 – Neolisk 2014-12-05 18:33:39
是否有一個可行的foreach語句可用於XML文件中的多個記錄,放置在xe的位置下方以循環訪問ConvertValue?是否有任何理由我不需要包含一個? – Eiketsu 2014-12-05 19:14:44