所以我正在使用wpf进行练习并从azure表中获取数据,但我使用DynamicTableEnity来查询cloudtableclient。尝试将返回到可以在WPF的Datagrid中显示的对象的结果转换为一个大问题。
这需要一个对象列表,我不知道哪个对象返回但是我拥有DynamicTableEnity的所有数据。所以我的第一个黑客就是如下。
List<dynamic> dynamicList = new List<dynamic>();
foreach (var entry in tableStorageEntry)
{
var dictionaryObject = AzureConversionHelper.Converstion(entry);
var json = new JavaScriptSerializer().Serialize(dictionaryObject);
dynamic foo = JObject.Parse(json);
dynamicList.Add(foo);
}
public static object Converstion(DynamicTableEntity entity)
{
var dictionary = new Dictionary<string, object>();
dictionary.Add("PartitionKey", entity.PartitionKey);
dictionary.Add("RowKey", entity.RowKey);
dictionary.Add("TimeStamp", entity.Timestamp.ToString());
foreach (var prop in entity.Properties)
{
dictionary.Add(prop.Key, prop.Value.PropertyAsObject);
}
return dictionary;
}
我不知道自己在做什么,这是一场艰苦的斗争,因为我对匿名对象的工作并不多。我的hack是将属性转换为字符串字典,将它们转换为json字符串,然后将它们解析回动态对象。 。 。 。 。这听起来真的很糟糕,即使在我脑海中,但是在对匿名类型的文章进行了几个小时之后,我提出了这个想法。
这给了它多么可怕的工作,所以它对我来说是一个开始,但当我拉下大量数据时它变成了一个真正的问题,而且由于我几乎要做三重阅读,这使得任务变得非常痛苦通过数据。任何人都可以指出一个更好的方法,或者可能指出如何更好地解决这个问题。