C# 序列化对象而不包括属性名

C# 序列化对象而不包括属性名,c#,.net,wcf,serialization,C#,.net,Wcf,Serialization,我有一个简单的目标: [DataContract] public class MyClass { [DataMember(Name = "MyClassNo")] public int MyClassNo { get; set; } [DataMember(Name = "MyName")] public string MyName { get; set; } } 当我通过web服务序列化它时,我得到 [ {"MyClassNo": 1, "MyName"

我有一个简单的目标:

[DataContract]
public class MyClass
{
    [DataMember(Name = "MyClassNo")]
    public int MyClassNo { get; set; }
    [DataMember(Name = "MyName")]
    public string MyName { get; set; }
 }
当我通过web服务序列化它时,我得到

[
  {"MyClassNo": 1, "MyName": "Test1"},
  {"MyClassNo": 2, "MyName": "Test2"}
]
但我想要的是不包含属性名称的数据:

[
  {1, "Test1"},
  {2, "Test2"}
]
我如何做到这一点

*编辑-我用来序列化的代码是:

var myObj = MyOpenSQlConnection.Query<MyClass>(@"select MyClassNo, MyName from MyTable");
return myObj.ToList<MyClass>();
var myObj=MyOpenSQlConnection.Query(@“从MyTable中选择MyClassNo、MyName”);
返回myObj.ToList();

请注意,我正在使用将sql结果映射到我的对象

您可以向所有成员指定此属性:[DataMember(Name=“REMOVEME”)]
然后将其替换为空字符串:)

如果不编写自己的序列化程序将其序列化为属性哈希以外的内容,则不可能执行此操作。哈希是键值字段的序列,因此每个字段必须具有唯一的键

如果尝试为每个键设置空白值,如中所示:

{"": "apple", "": "banana", "": "coconut"}
那么你真正拥有的只是:

{"": "coconut"}
因为每个键都将覆盖它前面的一个键


更好的问题可能是,“为什么要序列化而不使用属性名?”尤其是在基于web的环境中,您需要知道哪个值对应于哪个字段。

如果您可以保证
MyClassNo
始终是不同的,那么您可以返回一个
字典,而不是一个
列表
,它可能更符合您所追求的内容。

您有序列化程序的代码吗使用?这似乎是一个JSON格式
{1,“Test1”}
这是无效的JSON选择dapper非常好(有偏差;p),但在这种情况下不应该影响序列化。不幸的是,这不起作用,当我这样做时,我得到一个错误324(net::ERR_EMPTY_响应)::服务器未发送任何数据就关闭了连接。好的,我的示例简化了,我的一些对象有60多个属性,因此我不确定是否可以使用字典。看起来我需要编写自己的序列化程序,我希望有一个现成的序列化程序!在回答你的第二个问题时:我真的不想就此展开激烈的争论,但我希望在不压缩数据的情况下传输尽可能少的字节。