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类不替换静态类型。

在这种特殊情况下,您必须放弃ExpandoObject,而使用自定义静态类。如果需要包含动态数据结构的内容,请根据任务使用Dictionary<string,string>Dictionary<string,object>