将Linq结果直接序列化为JSON

Enr*_*oft 6 c# linq serialization json objectquery

我正在开发一个WebService,它将linq转换为sql db并将结果放入VAR变量中.然后我想使用javascript序列化程序(c#)将VAR中的结果序列化为json格式.像这样的东西:

var sb= from p in ent.people .........
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new       System.Runtime.Serialization.Json.DataContractJsonSerializer(sb.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, sb);
string json = System.Text.Encoding.Default.GetString(ms.ToArray());
Run Code Online (Sandbox Code Playgroud)

但是我得到了一个像这样的错误回应:

Type      'System.Data.Objects.ObjectQuery`1[<>f__AnonymousType2d`5[System.String,System.Nu llable`1[System.Int32],System.Nullable`1[System.Int32],System.Int32,System.String]]' cannot be serialized. 
Run Code Online (Sandbox Code Playgroud)

请考虑使用DataContractAttribute属性对其进行标记,并使用DataMemberAttribute属性标记要序列化的所有成员.如果类型是集合,请考虑使用CollectionDataContractAttribute对其进行标记.有关其他受支持的类型,请参阅Microsoft .NET Framework文档.

我如何直接将LINQ结果串行化为JSON?非常感谢所有答案!恩里科

Dar*_*rov 5

DataContractJsonSerializer 不支持匿名对象。如果你想序列化匿名对象,你可以使用JavaScriptSerializer类:

var sb = from p in ent.people .........
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(sb);
Run Code Online (Sandbox Code Playgroud)


Maw*_*rdy 5

您可以使用Newtonsoft.JSON

这是语法

var sb = from p in ent.people .........
string json = JsonConvert.SerializeObject(sb);
Run Code Online (Sandbox Code Playgroud)