C#的问题 Dictionary键值对和从数据库中读取的DataSet对比问题,好答案加分

有个Dictionary的键值对,需要把这个键值对中的每条数据和从数据库中读取到的Dataset中的数据对比,如果值相同则弹出一个消息框,该怎么遍历对比呢?... 有个Dictionary的键值对,需要把这个键值对中的每条数据和从数据库中读取到的Dataset中的数据对比,如果值相同则弹出一个消息框,该怎么遍历对比呢? 展开
 我来答
没排名排名C2
推荐于2016-04-23 · TA获得超过274个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:172万
展开全部

我给你个方法,不知道可以不,我的电脑没有数据库没有测试。代码如下;

数据库:

create table tb_name(
id int primary key identity,
key int,
name varchar(50)
)
insert intio tb_name(key,name) value (1,'魏巍')
insert intio tb_name(key,name) value (2,'lily')
insert intio tb_name(key,name) value (3,'lucy')

C#代码如下:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
_dictionary.Add(1,"魏巍");
_dictionary.Add(2,"lucy");
var alert = "";
foreach (var name in getNames()) //循环集合
{
if (_dictionary.ContainsValue(name.name)) //判断集合中是否存在表中的数据,ContainsValue这里判断的是字典的值。
//如果判断键值可以使用ContainsKey(name.key)进行判断
{
alert += "字典集合中存在" + name.name;
}
}
Response.Write(alert);
}
}
/// <summary>
/// 定义方法,从数据库中得到数据
/// </summary>
/// <returns>返回name集合</returns>
private List<Names> getNames()
{
List<Names> names = null;
var str = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
var conn=new SqlConnection(str);
const string sql = "select * from tb_name";
conn.Open();
var cmd = new SqlCommand(sql,conn);
var reader = cmd.ExecuteReader();
while (reader.Read())
{
var name = new Names
{
id = (int)reader["id"],
key =Convert.ToInt32(reader["key"]),
name = reader["name"].ToString()
};
names.Add(name);
}
return names;
}
//定义集合
Dictionary<int,string> _dictionary=new Dictionary<int, string>();
//定义类映射数据库中的表
public class Names
{
public int id { get; set; }
public int key { get; set; }
public string name { get; set; }
}

呵呵,应该可以吧。。。顶一下吧。。。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式