keyvaluepair_C# KeyValuePairTKey,TValue的用法【转】 .
KeyValuePair可以这样实例化
KeyValuePair mcmillan = new KeyValuePair("McMillan", 99);
取值
Console.Write(mcmillan.Key);
Console.Write(" " + mcmillan.Value);
以下是一个把对象放到数组中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DataStruct9
{
class Program
{
static void Main(string[] args)
{
KeyValuePair[] gradeBook = new KeyValuePair[10];
gradeBook[0] = new KeyValuePair("McMillan", 99);
gradeBook[1] = new KeyValuePair("Ruff", 64);
for (int i = 0; i <= gradeBook.GetUpperBound(0); i++)
if (gradeBook[i].Value != 0)
Console.WriteLine(gradeBook[i].Key + ": " + gradeBook[i].Value);
Console.Read();
}
}
}
C# KeyValuePair的用法。结构体,定义可设置或检索的键/值对。也就是说我们可以通过 它记录一个键/值对这样的值。比如我们想定义一个ID(int类型)和Name(string类型)这样的键/值对,那么可以这 样使用。
///
/// 设置键/值对
///
///
private KeyValuePair SetKeyValuePair()
{
int intKey = 1;
string strValue = "My value";
KeyValuePair kvp = new KeyValuePair(intKey, strValue);
return kvp;
}
///
/// 获得键/值对
///
private void GetKeyValuePairDemo()
{
KeyValuePair kvp = SetKeyValuePair();
int intKey = kvp.Key;
string strValue = kvp.Value;
}
如果想使用泛型的话,也是差不多这样子,一般批量读取数据的时候,当只需要读两个字段(Id and Name)时, 如果想不用Model类,并配合泛型使用KeyValuePair,示例:
1、从数据库中读取数据
///
/// 获取所有企业的Id(enterprise_id)及英文名 (enterprise_name_eng)
///
/// enterprise_info表中的所有企业 Id及英文名
public List> GetEnterpriseIdAndNameEngList()
{
//enterprise_id键和enterprise_name_eng 对
List> lstIdKeyNameEngValue = new List>();
string cmdText = "select enterprise_id, enterprise_name_eng from enterprise_info";
using (OracleDataReader reader = OracleHelper.ExecuteReader(OracleHelper.OracleConnString, CommandType.Text, cmdText, null))
{
try
{
MyEventLog.Log.Debug ("cmdText= " + cmdText);
while (reader.Read())
{
KeyValuePair idKeyNameEngValue = new KeyValuePair (
&nbs p; reader.IsDBNull(0) ? 0 : reader.GetInt64(0),
; reader.IsDBNull(1) ? string.Empty : reader.GetString(1)
; );
lstIdKeyNameEngValue.Add (idKeyNameEngValue);
}
OracleHelper.DataReaderClose(reader);
}
catch (OracleException e)
{
MyEventLog.Log.Error ("cmdText= " + cmdText);
MyEventLog.Log.Error(e);
throw e;
}
}
return lstIdKeyNameEngValue;
}
2、在业务中处理数据
///
/// 函数作用:
/// 1、返回从待导入的企业名称中获的有效企业Id集。
/// 2、返回有效的企业行号集。
/// 3、返回无效的企业行号集。
///
/// 待导入的企业名称(英文)集
/// Excel表中有效的企业Id行集
/// Excel表中无效的企业Id行集
/// 返回有效的行的索引列表
public List PrepareForImport(List lstEnterpriseNameEn, out List lstValidRowsIndex, out List lstInvalidRowsIndex)
{
//有效的企业Id行
lstValidRowsIndex = new List();
//无效的企业Id行
lstInvalidRowsIndex = new List(); //获取所有的企业Id及英文名
List> lstIdKeyNameEngValue = dal.GetEnterpriseIdAndNameEngList(); //用于存放有效的企业的Id,即如果可以在enterprise_info表中找到此企业的英文名,那么表示此企业存在,因此把存在的企业Id获取出来,存放于此变量
List lstValidEnterpriseId = new List(); //通过以下循环可以获得可以有效的企业Id列表
for (int i = 0; i < lstEnterpriseNameEn.Count; i++)
{
foreach (KeyValuePair kvp in lstIdKeyNameEngValue)
{
if (lstEnterpriseNameEn[i] == kvp.Value)
{
//获得有效行索引
lstValidRowsIndex.Add(i); //获得有效的企业Id
lstValidEnterpriseId.Add(kvp.Key); //找到了有效的ID后马上跳出内循环,回到外循环
continue;
}
} if (!lstValidRowsIndex.Contains(i) && !lstInvalidRowsIndex.Contains(i))
{
//取得无效行索引
lstInvalidRowsIndex.Add(i);
}
}
return lstValidEnterpriseId;
}
keyvaluepair_C# KeyValuePairTKey,TValue的用法【转】 .相关推荐
- KeyValuePairTKey, TValue是DictionaryEntry的泛型版本
如同Dictionary<TKey, TValue>是HashTable的泛型版本一样,KeyValuePair<TKey, TValue>是DictionaryEntry的泛 ...
- keyvaluepair_c# KeyValuePair用法
private KeyValuePair SetKeyValuePair() { int intKey = 1; string strValue = "My value"; Key ...
- C#编程(五十三)----------字典DictionaryTKey,TValue
字典 关键字:Dicitionary 说明: 必须包含命名空间System.Collection.Generic Dictionary里面的每一个元素都是一个键值对(由两个元组组成:键和值). 键必须 ...
- LinQ To Object 基本用法
LinQ To Object 基本用法 inq的基本语法:var result = from item in container select item; linq获取数据子集: var result ...
- C# HashSet 用法
.NET 3.5在System.Collections.Generic命名空间中包含一个新的集合类:HashSet.这个集合类包含不重复项的无序列表.这种集合称为"集(set)". ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Pandas_transform的用法
先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
最新文章
- 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件
- 原文翻译:深度学习测试题(L1 W3 测试题)
- Android 中单选框或复选框点击其中一个,其余取消操作
- boost::mp11::mp_from_sequence相关用法的测试程序
- mysql打包成docker_web应用如何打包成docker镜像?
- c++11-template template Parameter
- 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主
- 这些全国各地的特色面,你都吃过了吗?
- 改变 Gnome 应用程序 图标 大小
- L2-010 排座位 (25 分)(并查集)
- 串口通信USART的波特率误差计算GD32、STM32
- 将luarocks整合进openresty,并安装lfs
- SpringBoot项目:抽奖精灵
- Smartbi制作报表教程:热销车型分类排名总表
- 一键保存网页为PDF
- css规则中区块block,听晴空讲Drupal主题——第六章 主题中的CSS(10)
- 《网络攻防技术与实践》(诸葛建伟)读书笔记
- java try catch 输入字符串_java – 没有在try / catch中捕获NumberFormatException
- w7电脑蓝屏怎么解决_教您电脑蓝屏怎么办
- vite 不支持 ie 11?configureBuild Hook 帮你定制 bundle 打包过程
热门文章
- Containerd 的前世今生和保姆级入门教程
- 一手好牌打的稀烂,如今面临倒计时,网友哭求众筹活下去...
- 每日一皮:雷神索尔的锤子为什么这么重?
- 面试5家公司,我发现这80道面试题最好用,直中要害
- linux修改权限重启恢复,Linux错误执行:chmod 777 .*或chown -R * 的补救方法
- 进栈顺序为abcd则出栈顺序为_线性表之顺序表示
- Navicat连接mysql数据库
- error D8021 :无效的数值参数“/Wno-cpp” cython_bbox
- python判断图片模糊
- python 多进程管道 消息式通信