文章内容
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;
}
评论列表