文章内容

2017/7/22 16:31:00,作 者: 黄兵

Dictionary<TKey,TValue>

首先要使用Dictionary集合,需要导入c#泛型命名空间

       using System.Collections.Generic;

一个 Dictionary< TKey, TValue> ,只要不修改该集合可以同时,支持多个读取器。即便如此,枚举整个集合本质上不是线程安全过程。 其中一个枚举,解决了写访问的情况很少,必须在整个枚举期间锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。

描述
任何键都必须是唯一的,且不能为空
若值为引用类型,则可以为空值
key和value可以是任何类型

下面看一个例子:


private Dictionary<string,int> getById(string Id, int? flag)
{
using (UnitOfWork uow = new UnitOfWork())
{
if (flag == 1)
{
var topicListId = uow.TopicListRepository
.Get(x => x.VirualUrl == Id);
int BlogId = topicListId.BlogsId;
int TopicFirstId = topicListId.TopicFirstId;
//返回BlogId和TopicFirstId的集合
Dictionary<string, int> getId = new Dictionary<string, int>();
getId.Add("BlogId", BlogId);
getId.Add("TopicFirstId", TopicFirstId);
return getId;
}
else
{
var TopicFirstId = uow.TopicFirstRepository
.Get(x => x.VirualPath == Id).Id;
//查询列表
var topicList = uow.TopicListRepository.GetAll()
.Where(x => x.TopicFirstId == TopicFirstId);
//默认显示第一条文章内容
var BlogId = topicList.OrderBy(x => x.Rank).FirstOrDefault().BlogsId;
//返回BlogId和TopicFirstId的集合
Dictionary<string, int> getId = new Dictionary<string, int>();
getId.Add("BlogId", BlogId);
getId.Add("TopicFirstId", TopicFirstId);
return getId;
}
}
}

创建及初始化

Dictionary<string, int> getId = new Dictionary<string, int>();

添加元素 Add(string key,int value)

mDictionary.Add("one",1);
mDictionary.Add("two",2);
mDictionary.Add("three",3);
mDictionary.Add("four",4);

集合元素个数 Count()

intmcount =mDictionary.Count();

查找元素 ContainsKey(string key)

Dictionary<string, int> FirstIdAndBlogId = getById(Id, Flag);

if (FirstIdAndBlogId.ContainsKey("BlogId") &&
FirstIdAndBlogId.ContainsKey("TopicFirstId"))
{
BlogId = FirstIdAndBlogId["BlogId"];
TopicFirstId = FirstIdAndBlogId["TopicFirstId"];
}

删除元素Remove(string key)
mDictionary.Remove("two");

遍历元素

foreach (KeyValuePair<string,int> kvp in myDictionary) 
{
string key = kvp.Key;
int value = kvp.Value;
}

仅遍历键属性

Dictionary<string,int>.KeyCollection keyCol = mDictionary.Keys; 
foreach(string key in keyCol)
{
string strkey =key;
}

仅遍历值属性

Dictionary<string,int>.ValueCollection valueCol = mDictionary.Values;
foreach(string value invalueCol)
{
int ivalue = value;
}

本文参考:飞跃 Ni Wo Ta - C#泛型集合—Dictionary使用方法

ASP.NET安全
JavaScript中&&理解
分享到:

发表评论

评论列表