Dictionary集合

Dictionary<string, string>是一个泛型集合,他本身有集合的功能有时候可以把它看成数组,

他的结构是这样的:Dictionary<[key], [value]> 

他的特点是存入对象是需要与[key]值一一对应的存入该泛型,通过某一个一定的[key]去找到对应的值。

直接看代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace DictionarySorting
{
class Program
{
static void Main(string[] args)
{
Dictionary<int, string> dic = new Dictionary<int, string>();
dic.Add(1, "HaHa");
dic.Add(5, "HoHo");
dic.Add(3, "HeHe");
dic.Add(2, "HiHi");
dic.Add(4, "HuHu");

var result = from pair in dic orderby pair.Key select pair;
foreach (KeyValuePair<int, string> pair in result)
{
Console.WriteLine("Key:{0}, Value:{1}", pair.Key, pair.Value);
}
Console.ReadKey();
}
}
}

Dictionary的基本用法:

假如需求:现在要导入一批数据,这些数据中有一个称为公司的字段是我们数据库里已经存在了的,目前我们需要把每个公司名字转为ID后才存入数据库。

分析:每导一笔记录的时候,就把要把公司的名字转为公司的ID,这个不应该每次都查询一下数据库的,因为这太耗数据库的性能了。

解决方案:在业务层里先把所有的公司名称及相应的公司ID一次性读取出来,然后存放到一个Key和Value的键值对里,然后实现只要把一个公司的名字传进去,就可以得到此公司相应的公司ID,就像查字典一样。对,我们可以使用字典Dictionary操作这些数据。

示例:SetKeyValue()方法相应于从数据库里读取到了公司信息。 

 

/// <summary>
/// 定义Key为string类型,Value为int类型的一个Dictionary
/// </summary>
/// <returns></returns>
protected Dictionary<string, int> SetKeyValue()
{
Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("公司1", 1);
dic.Add("公司2", 2);
dic.Add("公司3", 3);
dic.Add("公司4", 4);
return dic;
}
/// <summary>
/// 得到根据指定的Key行到Value
/// </summary>
protected void GetKeyValue()
{
Dictionary<string, int> myDictionary = SetKeyValue();
//测试得到公司2的值
int directorValue = myDictionary["公司2"];
Response.Write("公司2的value是:" + directorValue.ToString());
}

时间: 2024-11-03 18:57:57

Dictionary集合的相关文章

关于.NET的集合总结_实用技巧

        集合是一些有共同特征的独立数据项组成的,通过集合,我们可以可以使用相同的调用代码来处理一个集合的所有元素,而不用单独处理每一个单独的项..net的集合诸如(System.Array类以及 System.Collections命名空间)数组.列表.队列.堆栈.哈希表.字典甚至(System.Data下)DataSet.DataTable,还有2.0中加入的集合的泛型版本(System.Collections.Generic和 System.Collections.ObjectMod

visual studio 2015 未能计算子集/集合类型调试

问题描述 visual studio 2015 未能计算子集/集合类型调试 在使用visual studio 2015 企业版 sp1调试程序时,悬停在实例.集合上时展开,无法显示内部数据,提示"未能计算子集"尝试多个项目.管理员运行,均是一样.设置"选项-调试-常规"中的 "托管兼容模式"后一般实例显示正常,但对于List/Dictionary集合类型实例,没有 展开枚举 的选项,只能通过"非公共成员"的entries查看不

dictionary-C# Dictionary用法求救?

问题描述 C# Dictionary用法求救? 这个例子中,Dictionary集合没有添加str,为什么下面能作比较,然后输出呢?新手求大神指导. 解决方案 新建的dic确实是空的,但是你做第一次比较的时候执行的是else dic[str[i]]=1:这个地方就赋了键值value+1,相同字母比较的第二次 比较的时候已经有这个键值value++.可以理解为新建一张白纸,做比较的时候就写上去key.value. 解决方案二: C#中Dictionary的用法C# DictionaryC# Dic

从函数中返回多个值的方法

原文: http://blog.csdn.net/testing_is_believing 第一种方法是利用全局变量,因此根本不用返回,只要直接给全局变量赋值即可. 例: Dim intNumber_1: intNumber_1 = 40 Dim intNumber_2: intNumber_2 = 80   Public Sub PassValues     intNumber_1 = intNumber_1/4     intNumber_2 = intNumber_2/4 End Sub

多映射通用集合类(C#实现)--支持一键多值存储

.net的通用Dictionary集合类有一个"键"唯一约束.考虑这样一种情况:你想在Dictionary中存Author Name以及Articles.首先,你想加入Bob->Article_Good_One,而当你想加入Bob->Article_Good_Second,你将得到一个异常.这是因为Dictionary的唯一键约束.Dictionary拒绝接受相同的key,因为它要求键唯一. Dictionary类被设计成对搜索具有很高的性能.而多映射类在你想让搜索具有很高

Unity3D 网络通信_HTTP协议:获取网络图片、内容

自己写的测试demo,一个功能一个功能测试着做的,没有什么结构,凑合看吧. http协议,在手机平台,URL必须必带http://头. 此脚本主要实现了  分别用pose和get方式获取天气预报信息(XML格式). 解析XML 获取网络图片 获取网络图片(base64格式) base64与byte[]互转 byte[]与Texture2D(图片)互转 更多常用WEBService:http://www.webxml.com.cn/zh_cn/web_services.aspx using Uni

C#如何遍历Dictionary_C#教程

本文实例为大家分享了C#如何遍历Dictionary的具体代码,供大家参考,具体内容如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _02DictionaryIterator { class Program { static void Main(string[] args) { Conso

在Dictionary&amp;amp;lt;int,string&amp;amp;gt;泛型集合中,如何通过值来获得相应的键呢?

问题描述 在Dictionary<int,string>泛型集合中,如何通过值来获得相应的键呢? 解决方案 解决方案二:有可能一对多啊,你怎么个规则,遍历吧解决方案三:引用1楼bdmh的回复: 有可能一对多啊,你怎么个规则,遍历吧 里面的键与值是一对一的关系,就是想通过值来获得相应的键,如何弄来?解决方案四:遍历Dictionary,判断与值相等的解决方案五:IDictionary<string,object>idic=newDictionary<string,object&

ASP编程技术学习:Cookie集合

     Cookie是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个Web站点会话之间持久地保持数据.Request和Response对象都有一组Cookie. Request.cookie集合是一系列Cookie,从客户端与HTTP Request一起发送到Web服务器.反过来,如果你希望把Cookie发送到客户机,就可以使用Response.cookie 1.ExpiresAbsolute属性 该属性可以赋一个日期,过了这个日期Cookie就不能再被使用了.通过给E