【发布时间】:2015-02-03 22:09:20
【问题描述】:
我有一个来自正在运行的进程的 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>
需要将 Field4 从 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 不是最好的途径,那会是什么?如果是的话,最好的方法是什么?此外,任何可以推荐的沿着这些思路的特别有用的资源将不胜感激;我更愿意学习代码而不是复制代码。毕竟,我不想下周再问这个问题。
【问题讨论】: