ExpandoObject性能不佳
本文关键字:性能 ExpandoObject | 更新日期: 2023-09-27 18:00:27
我有一个可怕的问题,一个ExpandoObject列表用一个Incoming Products读取他们的数据,我不能使用一个正常的类,因为我使用了一个产品列表,一些产品使用大小作为数字(20,21,22…),另一个使用字母(S,M,L,XL…)我把它放在一个网格上,在每个大小列中,我放每个商店从供应商收到的数量
这是我的清单:
listaGrade = new List<dynamic>();
foreach(product p in BD.Proc)
{
foreach(store s in BD.Stores)
{
dynamic itemGradeDinamic = new ExpandoObject();
itemGradeDinamic.MODELDES = p.MODELDES;
itemGradeDinamic.TIPO = p.TIPO;
itemGradeDinamic.DESCRIPTION = p.DESCRIPTION;
itemGradeDinamic.STORE = s.CODE;
itemGradeDinamic.STOREDES = s.NAME;
itemGradeDinamic.SUBTOTAL = 0;
foreach (string size in p.sizes)
{
((IDictionary<String, Object>)itemGradeDinamic).Add(size, 0);
}
listaGrade.add(itemGradeDinamic);
}
}
获取数据:
object description, modelDes = "";
object qtde, store = 0;
foreach (ExpandoObject obj in listaGrade)
{
foreach (string size in "products".sizes)
{
if (((IDictionary<string, object>)obj).TryGetValue(size, out qtde))
{
if (Convert.ToDecimal(qtde) > 0)
{
((IDictionary<string, object>)obj).TryGetValue("DESCRIPTION", out description);
((IDictionary<string, object>)obj).TryGetValue("MODELDES", out modelDes);
((IDictionary<string, object>)obj).TryGetValue("TIPO", out tipo);
((IDictionary<string, object>)obj).TryGetValue("SHOP", out store);
}
}
}
}
ExpandoObject
类不替换静态类型。
在这种特殊情况下,您必须放弃ExpandoObject
,而使用自定义静态类。如果需要包含动态数据结构的内容,请根据任务使用Dictionary<string,string>
或Dictionary<string,object>
。