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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Office 2007或Office 2010套件初始安装中断后无法重新启动安装程序,错误“Microsoft Office xxx在安装过程中出错”…[通俗易懂]

    大家好,不知道大家在安装Office2007或Office2010时有没有遇到过这样的现象,在您第一次安装Office2007或Office2010套件时,因为某种原因安装中断,当您试图重新安装相同的Office套件时,安装失败并且收到如下的错误提示MicrosoftOffice<具体Office套件名>在安装过程中出错.具体祥见下图:其实出现这个错误的原因可能是因为在您上一次安…

    2022年4月3日
    151
  • python循环速度提高_提高python中for循环的速度

    python循环速度提高_提高python中for循环的速度我正在计算从 1 到 10 7 的数字的分区数 我用五边形数定理来实现 它提供了一种计算 n 的划分数的方法 我们称之为 P n P n 1 P n 2 P n 5 P n 7 所以 P n 依赖于不同的 P n x 其中 x 从 1 到 n 总之 长话短说 我使用两个循环 一个从 1 到 10 7 另一个使用 x 的定义 并根据特定的公式计算 正如您可以想象的 代码执行得相当慢 有什么方法可以提高这些 for 循环的速

    2025年10月27日
    3
  • MFC 获取窗口句柄

    MFC 获取窗口句柄1、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。#include<Windows.h>#include<stdio.h>#include<string.h>#include<iostream.h>intmain(intargc,char*argv[]){ //根据窗口名获取QQ游戏登录窗口句柄 HWNDhq=FindWind

    2022年7月21日
    10
  • 用心做软件—细节决定成败「建议收藏」

    用心做软件—细节决定成败「建议收藏」软件是什么?也许在编程者的眼中这是自己智慧的结晶,是技术运用的成果。但是在用户的眼中呢,用户会在乎你到底用了多少高级的技术、用了什么前卫的技术吗?我想大部分用户是不会管的,无论你是C#做的,Java做的,C++还是C做的,你的系统是Windows还是Linux,android还是塞班。用户的眼中你的软件只是一件产品,那么既然是产品,就要有价值,要能为用户带来方便,能为用户解决问题。当今的互联网上,

    2022年9月23日
    2
  • vue 键盘事件keyup/keydoen

    vue 键盘事件keyup/keydoen使用:当你按下键盘,键盘的值为13的时候,将会执行show函数方法以上两种keyup和keyup.13方法是一样的,点击回车按键,就会执行alert方法一些便捷方式:@keyup.13回

    2022年8月4日
    8
  • linux必须运行在enforcing,Linux(入门基础):97—SELinux三种模式的启动、关闭、查看(getenforce、setenforce、sestatus、restorecon)…

    linux必须运行在enforcing,Linux(入门基础):97—SELinux三种模式的启动、关闭、查看(getenforce、setenforce、sestatus、restorecon)…一、SELinux三种模式简介Enforcing:强制模式。代表SELinux在运行中,且已经开始限制domain/type之间的验证关系Permissive:宽容模式。代表SELinux在运行中,不过不会限制domain/type之间的验证关系,即使验证不正确,进程仍可以对文件进行操作。不过如果验证不正确会发出警告Disabled:关闭模式。SELinux并没有实际运行二、getenforce命…

    2022年6月27日
    37

发表回复

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

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