/// <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); }
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); }
/// <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); } }
/// <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); }