GetDictionary从DataTableHelp数据中,从指定两列中,获取不重复的字典 。我们可以指定返回字典的Key、Value的数据类型。
语法:
GetDictionary<TKey,TValue>(ColumnNames,Filter,Sort)
参数说明
名称 | 说明 |
ColumnNames | 必填项,字符串类型,列名称,从此列中提取不重复的值。 |
Filter | 可选参数,指定一个条件表达式,只返回符合此条件的值。 |
Sort | 可选参数,指定排序列,如果省略,则根据取值列排序,通常无需设置。 |
订单状态表中数据如下:
Vb.Net |
Dim db As Database=Proj.SysDataFactory("UserDB") '先获取DataTableHelp数据 Dim dt As DataTableHelp=db.ExecuteDataTableHelp("select * from 订单状态") '获取字典 Dim dic As Dictionary(Of Integer,String)=dt.GetDictionary(Of Integer,String)("状态ID,状态名","","状态ID") '遍历字典并显示 For Each item As KeyValuePair(Of Integer,String)In dic Proj.MsgDebug.Add(item.Key.ToString()+"|"+item.Value) Next '返回结果:1|待收货 '返回结果:2|已部分收货 '返回结果:3|完结 |
C# |
Database db = Proj.SysDataFactory["UserDB"]; // 先获取DataTableHelp数据 DataTableHelp dt = db.ExecuteDataTableHelp("select * from 订单状态"); // 获取字典 Dictionary<int, string> dic = dt.GetDictionary<int, string>("状态ID,状态名", "", "状态ID"); // 遍历字典并显示 foreach (KeyValuePair<int, string> item in dic) { Proj.MsgDebug.Add(item.Key.ToString() + "|" + item.Value); } //返回结果:1|待收货 //返回结果:2|已部分收货 //返回结果:3|完结 |
我们知道获取单列不重复值使用GetUniqueValues,获取两列不重复值用GetDictionary,那么获取两列以上的多列不重复值用什么方法呢?我们可以考虑用DataView.ToTable方法。
Vb.Net |
Dim db As Database=Proj.SysDataFactory("UserDB") '先获取DataTableHelp数据 Dim dt As DataTableHelp=db.ExecuteDataTableHelp("select * from 订单信息") Proj.MsgDebug.Add("总数据共{0}条:",dt.DataRows.Count) '获取字典 Dim dtResult As DataTableHelp=dt.DataView.ToTable(True,"产品,客户,业务员".Split(",")).GetDataTableHelp() Proj.MsgDebug.Add("不重复数据共{0}条:",dtResult.DataRows.Count) If dtResult IsNot Nothing AndAlso dtResult.DataRows.Count>0 Then '重新按产品,客户,业务员排序后遍历 For Each dr As RowData In dtResult.Select("","产品,客户,业务员") Proj.MsgDebug.Add(dr("产品").ToString()+"|"+dr("客户").ToString()+"|"+dr("业务员").ToString()) Next End If '返回结果:总数据共2003条: '返回结果:不重复数据共125条: '返回结果:产品01|客户01|业务员01 '返回结果:产品01|客户01|业务员02 '返回结果:产品01|客户01|业务员03 '返回结果:产品01|客户01|业务员04 '返回结果:产品01|客户01|业务员05 '返回结果:产品01|客户02|业务员01 '返回结果:产品01|客户02|业务员02 '返回结果:产品01|客户02|业务员03 '返回结果:产品01|客户02|业务员04 '返回结果:产品01|客户02|业务员05 '……后面结果太多,就不全贴出来了 |
C# |
Database db = Proj.SysDataFactory["UserDB"]; // 先获取DataTableHelp数据 DataTableHelp dt = db.ExecuteDataTableHelp("select * from 订单信息"); Proj.MsgDebug.Add("总数据共{0}条:", dt.DataRows.Count); // 获取字典 DataTableHelp dtResult = dt.DataView.ToTable(true, "产品,客户,业务员".Split(',')).GetDataTableHelp(); Proj.MsgDebug.Add("不重复数据共{0}条:", dtResult.DataRows.Count); if (dtResult != null && dtResult.DataRows.Count > 0) { // 重新按产品,客户,业务员排序后遍历 foreach (RowData dr in dtResult.Select("", "产品,客户,业务员")) { Proj.MsgDebug.Add(dr["产品"].ToString() + "|" + dr["客户"].ToString() + "|" + dr["业务员"].ToString()); } } // 返回结果:总数据共2003条: // 返回结果:不重复数据共125条: // 返回结果:产品01|客户01|业务员01 // 返回结果:产品01|客户01|业务员02 // 返回结果:产品01|客户01|业务员03 // 返回结果:产品01|客户01|业务员04 // 返回结果:产品01|客户01|业务员05 // 返回结果:产品01|客户02|业务员01 // 返回结果:产品01|客户02|业务员02 // 返回结果:产品01|客户02|业务员03 // 返回结果:产品01|客户02|业务员04 // 返回结果:产品01|客户02|业务员05 // ……后面结果太多,就不全贴出来了 |