我想使用ExpandoObjects列表作为Telerik报告的数据源,但目前Telerik报告似乎不支持这一点。它们确实支持将XML作为数据源,因此我试图将我的ExpandoObjects列表转换为XML。
我在Can I serialize an ExpandoObject in .NET 4?上看到,可以通过ExpandoObject (VB.net代码,而不是c#)通过jsonFx将单个ExpandoObject序列化为XML:
dim XMLwriter As New JsonFx.Xml.XmlWriter
dim serializedExpando as string = XMLwriter.Write(obj)或其等效的c#代码:
JsonFx.Xml.XmlWriter XMLwriter = new JsonFx.Xml.XmlWriter();
String serializedExpando = XMLwriter.Write(obj);如何将整个列表序列化为XML字符串?
发布于 2015-05-11 11:31:11
您可以先将ExpandoObject转换为IDictionary<string, object>,然后使用DataContractSerializer进行序列化,从而将其序列化:
void Main()
{
dynamic firstExpando = new ExpandoObject();
firstExpando.Name = "Name";
firstExpando.Age = 1;
dynamic secondExpando = new ExpandoObject();
secondExpando.Name = "SecondName";
secondExpando.Age = 2;
var expandoList = new List<ExpandoObject> {firstExpando, secondExpando};
var list = expandoList.Select(expando => (IDictionary<string, object>)expando)
.ToList();
var dataContractSerializer = new DataContractSerializer(list.GetType());
using (MemoryStream memoryStream = new MemoryStream())
{
dataContractSerializer.WriteObject(memoryStream, list);
string outputXml = Encoding.UTF8.GetString(memoryStream.ToArray())
}
}https://stackoverflow.com/questions/30166183
复制相似问题