Beispiel #1
0
        /// <summary>
        /// 内部TryAdd,自己封装一个方法, 个人推荐用这个.代码改的少
        /// </summary>
        /// <param name="propModel"></param>
        /// <param name="source"></param>
        private static void AddSourceWay3_AddRange_ByFunction(ExcelModel propModel, KvSource <string, long> source)
        {
            #region dt

            var dt = new DataTable();
            dt.Columns.Add("Id");
            dt.Columns.Add("Name");

            var dr = dt.NewRow();
            dr["Id"]   = 6;
            dr["Name"] = "事业6部";

            dt.Rows.Add(dr);

            #endregion

            //source.AddRange(GetSource_部门(propModel, dt).Data);

            var prop      = propModel.部门;
            var keyType   = prop.GetKeyType();
            var valueType = prop.GetValueType();

            var kvsource = prop.CreateKVSource();
            foreach (DataRow item in dt.Rows)
            {
                var key   = SafeRow(item, "Name", keyType);
                var value = SafeRow(item, "Id", valueType);
                kvsource.TryAdd(key, value);
            }

            source.AddRange(kvsource.Data);
        }
Beispiel #2
0
 public bool AddKVSourceByKey <TKey, TValue>(string key, KvSource <TKey, TValue> value)
 {
     if (string.IsNullOrEmpty(key))
     {
         throw new ArgumentException("key不能为空", nameof(key));
     }
     if (this.KVSource == null)
     {
         return(false);
     }
     if (this.KVSource.ContainsKey(key))
     {
         return(false);
     }
     this.KVSource.Add(key, value);
     return(true);
 }
Beispiel #3
0
        /// <summary>
        ///  TryAdd 自己创建 DataTable
        /// </summary>
        /// <param name="propModel"></param>
        /// <param name="source"></param>
        private static void AddSourceWay2_TryAdd_CreateDataTable(ExcelModel propModel, KvSource <string, long> source)
        {
            #region CreateDataTable

            var dt = new DataTable();
            dt.Columns.Add("Id");
            dt.Columns.Add("Name");
            var dr1 = dt.NewRow();
            var dr2 = dt.NewRow();
            dr1["Id"]   = 4;
            dr1["Name"] = "事业4部";
            dr2["Id"]   = 5;
            dr2["Name"] = "事业5部";
            dt.Rows.Add(dr1);
            dt.Rows.Add(dr2);

            #endregion

            var prop      = propModel.部门;
            var keyType   = prop.GetKeyType();
            var valueType = prop.GetValueType();

            foreach (DataRow item in dt.Rows)
            {
                //确保类型是对的
                var key   = SafeRow(item, "Name", keyType);
                var value = SafeRow(item, "Id", valueType);
                source.TryAdd(key, value);
            }
        }
Beispiel #4
0
        /// <summary>
        /// KV添加方式1-AddRange() 自己创建 DataSource
        /// </summary>
        /// <param name="propModel"></param>
        /// <param name="source"></param>
        private static void AddSourceWay1_AddRange_CreateDataSource(ExcelModel propModel, KvSource <string, long> source)
        {
            #region CreatDataSource

            var dataSource = propModel.部门.CreateKVSourceData();

            //dataSource.Add("事业1部", 1);
            //dataSource.Add("事业2部", 2);
            //dataSource.Add("事业3部", 3);

            #region dt

            var dt = new DataTable();
            dt.Columns.Add("Id");
            dt.Columns.Add("Name");
            var dr1 = dt.NewRow();
            var dr2 = dt.NewRow();
            var dr3 = dt.NewRow();
            dr1["Id"]   = 1;
            dr1["Name"] = "事业1部";
            dr2["Id"]   = 2;
            dr2["Name"] = "事业2部";
            dr3["Id"]   = 3;
            dr3["Name"] = "事业3部";
            dt.Rows.Add(dr1);
            dt.Rows.Add(dr2);
            dt.Rows.Add(dr3);

            #endregion

            //var prop = propModel.部门;
            //var keyType = prop.GetKeyType();
            //var valueType = prop.GetValueType();

            foreach (DataRow item in dt.Rows)
            {
                //var k = SafeRow(item, "Name", keyType);
                //var v = SafeRow(item, "Id", valueType);
                //dataSource.Add((string)k, (long)v);

                dataSource.Add(item["Name"].ToString(), Convert.ToInt64(item["Id"]));
            }

            #endregion

            source.AddRange(dataSource);
        }