zoukankan      html  css  js  c++  java
  • Dictionary To Dynamic

    原文发布时间为:2012-12-25 —— 来源于本人的百度文章 [由搬家工具导入]

    public static class DictionaryExt
        {

            /// <summary>
            /// Extension method that turns a dictionary of string and object to an ExpandoObject
            /// </summary>
            public static ExpandoObject ToExpando(this IDictionary<string, object> dictionary)
            {
                var expando = new ExpandoObject();
                var expandoDic = (IDictionary<string, object>)expando;

                // go through the items in the dictionary and copy over the key value pairs)
                foreach (var kvp in dictionary)
                {
                    // if the value can also be turned into an ExpandoObject, then do it!
                    if (kvp.Value is IDictionary<string, object>)
                    {
                        var expandoValue = ((IDictionary<string, object>)kvp.Value).ToExpando();
                        expandoDic.Add(kvp.Key, expandoValue);
                    }
                    else if (kvp.Value is ICollection)
                    {
                        // iterate through the collection and convert any strin-object dictionaries
                        // along the way into expando objects
                        var itemList = new List<object>();
                        foreach (var item in (ICollection)kvp.Value)
                        {
                            if (item is IDictionary<string, object>)
                            {
                                var expandoItem = ((IDictionary<string, object>)item).ToExpando();
                                itemList.Add(expandoItem);
                            }
                            else
                            {
                                itemList.Add(item);
                            }
                        }

                        expandoDic.Add(kvp.Key, itemList);
                    }
                    else
                    {
                        expandoDic.Add(kvp);
                    }
                }

                return expando;
            }
        }



    ===============Demo==============

     public class Program
        {
            static void Main(string[] args)
            {
                var model = new Dictionary<string, object> { { "Name", "Jack" }, { "Age", 13 }, { "Married", false },
                    {"Girlfriend",new Dictionary<string, object> { { "Name", "Lucy" }, { "Age", 13 }, { "Married", true }}}
                };
                dynamic result = model.ToExpando();
                Console.WriteLine(result.Name);
                Console.WriteLine(result.Girlfriend.Name);
                Console.ReadLine();
            }
        }

  • 相关阅读:
    Docker部署Mysql实践
    Docker部署Zookeeper部署集群实践(2)
    Docker部署Zookeeper部署实践(1)
    Docker部署Jenkins 2.285版持续部署集成实践(1)
    Ubuntu18.04安装docker
    Git的配置
    C语言的一些小知识
    线段树模板整理
    关于Kmp
    HDU-2063(二分图匹配模板题)
  • 原文地址:https://www.cnblogs.com/handboy/p/7182593.html
Copyright © 2011-2022 走看看