Linq2Xsd срабатывает только на последовательности, когда есть элемент xsd: choice.
К счастью, я смог удалить xsd: выбор для Amazon XSD , который я использую (я просто не использовал MerchantOrderID), что позволило правильно сохранить последовательность в ToString()
для XML.
<xsd:choice> <--- removed line
<xsd:element ref="AmazonOrderID"/>
<xsd:element ref="MerchantOrderID"/> <--- removed line
</xsd:choice> <--- removed line
<xsd:element name="ActionType" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Refund"/>
<xsd:enumeration value="Cancel"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Сгенерированный код затем корректно содержит это в конструкторе, который сохраняет порядок
contentModel = new SequenceContentModelEntity(
new NamedContentModelEntity(XName.Get("AmazonOrderID", "")),
new NamedContentModelEntity(XName.Get("ActionType", "")),
new NamedContentModelEntity(XName.Get("CODCollectionMethod", "")),
new NamedContentModelEntity(XName.Get("AdjustedItem", "")));
Вы также можете сделать это вручную, подклассифицировав его самостоятельно, но я не уверен, как это будет работать с выбором xsd :. Это описано здесь , но я не проверял это.