C# DataContractSerializer仅部分序列化我的对象

C# DataContractSerializer仅部分序列化我的对象,c#,wcf,serialization,C#,Wcf,Serialization,我使用以下代码将对象序列化为XML StringBuilder sb = new StringBuilder(); DataContractSerializer dcr = new DataContractSerializer(query.Result.GetType()); XmlWriterSettings xws = new XmlWriterSettings() { CloseOutput = tru

我使用以下代码将对象序列化为XML

        StringBuilder sb = new StringBuilder();
        DataContractSerializer dcr = new DataContractSerializer(query.Result.GetType());
        XmlWriterSettings xws = new XmlWriterSettings()
        {
            CloseOutput = true,
            Encoding = Encoding.UTF8
        };
        dcr.WriteObject(XmlWriter.Create(sb, xws), query.Result);
        query.Result.ReportXml = sb.ToString();
但是我无法让DataContractSerializer返回完整有效的XML,对于我尝试序列化的每个对象,我都会返回6143个字符

下面是返回的XML字符串结尾的示例

<d2p1:anyType i:type="EquipmentDO">
  <DataObjectState>Modified</DataObjectState>
  <DataObjectType>Equipment</DataObjectType>
  <OwningDataManagerType>Configuration</OwningDataManagerType>
  <ConfigurationManagementID i:nil="true" />
  <ConfigurationManagerAction>Nothing</ConfigurationManagerAction>
  <ConfigurationRequestUserID i:nil="true" />
  <Id>10</Id>
  <Active>false</Active>
  <EquipmentModel>11</EquipmentModel>
  <LineClearanceLevelIds>
    <_keys>
      <d2p1:int>1</d2p1:int>
      <d2p1:int>2</d2p1:int>
      <d2p1:int>3</d2p1:int>
      <d2p1:int>4</d2p1:int>
    </_keys>
  </LineClearanceLevelIds>
  <Zone>5</Zone>
</d2p1:anyType>
<d2p1:anyType="" i:type="EquipmentDO">
  <DataObjectState>Modified</DataObjectState>
  <D

被改进的
装备
配置
没有什么
10
假的
11
1.
2.
3.
4.
5.
被改进的

我想象它被缓冲在
XmlWriter
中;尝试:

using(XmlWriter xw = XmlWriter.Create(sb, xws)) {
    dcr.WriteObject(xw, query.Result);
}