keyvaluepair_C# KeyValuePair<TKey,TValue>的用法【转】 .

keyvaluepair_C# KeyValuePair<TKey,TValue>的用法【转】 .KeyValuePair可以这样实例化KeyValuePairmcmillan=newKeyValuePair(“McMillan”,99);取值Console.Write(mcmillan.Key);Console.Write(“”+mcmillan.Value);以下是一个把对象放到数组中usingSystem;usingSystem.Collections.Generic…

大家好,又见面了,我是你们的朋友全栈君。

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;

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158836.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux下rpm包x86、i386、i486、i586、i686和x86_64这些后缀含义

    Linux下rpm包x86、i386、i486、i586、i686和x86_64这些后缀含义iamlaosong评:虽然rpm包版本很多,不过目前的新机器都可以使用x86_64版本,而且也应该使用这个版本,除非一些特殊场合,比如为了使用一些老版程序。有些功能没有x86_64版本,那也只好用i386了。现在的发行包,一般也就提供i386和x86_64两个版本,即32位版本和64位版本,有些甚至已经不提供i386版本了。1、i386、i586、i686与Noarchi386—几乎所有的X…

    2022年6月6日
    139
  • apache工作模式与配置

    apache工作模式与配置

    2022年3月11日
    30
  • 使用war包部署在Tomcat中运行

    使用war包部署在Tomcat中运行准备工具,Tomcat,eclipse 1选择你要导出的war包,选择你要的项目然后按照我圈起来的去操作 2,然后找到Web包,web下面还有一个WAR.file点击进去,找不到就在上面可以搜索的 3 第一个是你导出去的war包名称,第二个是你war包路径 4 这里我是导入在E盘中的 5把这个war包复制,然后去找你Tomcat的安…

    2022年6月14日
    28
  • Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件

    Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件

    2021年10月15日
    51
  • unity3d场景制作

    unity3d场景制作这是最后的成果以上图片资源均为资源商店免费获取制作地形的方法1创建相邻地形(主要用于地形的扩大)2绘制地形(主要用于地貌的设置)3绘制树(用于树木的绘制)4绘制细节(用于小草或小花的设置)5地形设置(用于整体设置)绘制的主要方面为2、3、4点第2点:不同地形是有不同纹理形成,在编辑地形层中选择自己喜欢的地形。注意:法线贴图是地形纹理的进一步深化,可以加强地形的真实感第3点绘制树与绘制地形基本相同第4点绘制细节与前两者不同的是,除了细节纹理外,还有细节网格对与地形的

    2022年4月30日
    59
  • CMOS图像传感器基础知识和参数理解「建议收藏」

    CMOS图像传感器基础知识和参数理解「建议收藏」CMOS图像传感器的工作原理:每一个CMOS像素都包括感光二极管(Photodiode)、浮动式扩散层(Floatingdiffusionlayer)、传输电极门(Transfergate)、起放大作用的MOSFET、起像素选择开关作用的M0SFET.在CMOS的曝光阶段,感光二极管完成光电转换,产生信号电荷,曝光结束后,传输电极门打开,信号电荷被传送到浮动式扩散层,由起放大作用的MOSFET电极门来拾取,电荷信号转换为电压信号。所以这样的CMOS也就完成了光电转换、电荷电压转换、模拟数

    2022年5月17日
    149

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号