C#的问题 Dictionary键值对和从数据库中读取的DataSet对比问题,好答案加分
有个Dictionary的键值对,需要把这个键值对中的每条数据和从数据库中读取到的Dataset中的数据对比,如果值相同则弹出一个消息框,该怎么遍历对比呢?...
有个Dictionary的键值对,需要把这个键值对中的每条数据和从数据库中读取到的Dataset中的数据对比,如果值相同则弹出一个消息框,该怎么遍历对比呢?
展开
1个回答
展开全部
我给你个方法,不知道可以不,我的电脑没有数据库没有测试。代码如下;
数据库:
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; }
}
呵呵,应该可以吧。。。顶一下吧。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询