日期:2014-05-19  浏览次数:20743 次

关于将数据库里的数据存入Hashtable中,再与另一个Hashtable比较,解决马上散分,谢谢
我把问题说明白点,我就不写我的代码了,因为我的代码通过测试是有问题的.我要从数据库里提取两个数据,分别是a,b,表名为table.然后保存到Hashtable1里,a为Hashtable1的键,b为Hashtable1的值,数据库提取出来的有可能一个键只有一个值,也有可能一个键有多个值,数据库里的数据就以键值对的方式保存到Hashtable1里,然后再用Hashtable1和Hashtable2进行比较,如果Hashtable1里的键在Hashtable2里也有就比较值,有相同的值就输出 "OK ".
这就是我要实现的整个过程,希望大家给予帮助,谢谢!!!


------解决方案--------------------
//把数值保存进Hashtable1
int count = myDs.Tables[ "table "].Rows;
for(int i=0;i <count;i++)
{
DataRow row = myDs.Tables[ "table "].Rows[i];
string strkbh=row[0].ToString().Trim();
string strcgq=row[1].ToString().Trim();
if(Hashtable1.ContainsKey(strkbh))
{
Hashtable1[strkbh] = Hashtable1[strkbh].ToString()+strcgq;
}
else
{
Hashtable1.Add(strkbh,strcgq);
}
}
//构造你的Hashtable2
。。。。。。。。。。。。。。。。

//比较Hashtable1和Hashtable2
foreach(DictionaryEntry de in Hashtable1)
{
if (Hashtable2.Contains(de.Key) &&
Hashtable2[de.Key].ToString() == de.Value.ToString())
{
Console.WriteLine( "OK ");
break;//如果存在则退出循环
}
}
------解决方案--------------------
using System;
using System.Collections;
using System.Data;

public class MyClass
{
public static void Main()
{
//定义并增充datatable
DataTable dt=new DataTable();
dt.Columns.Add( "key ",typeof(int));
dt.Columns.Add( "value ",typeof(int));
dt.Rows.Add(new object[]{1,1});
dt.Rows.Add(new object[]{1,2});
dt.Rows.Add(new object[]{3,3});
//Hashtable
Hashtable ht=new Hashtable ();
ht.Add(1,1);
ht.Add(2,2);
ht.Add(3,3);
//遍历
foreach(DataRow dr in dt.Rows){
if(ht.ContainsKey (dr[0]) && (int) ht[dr[0]]==(int)dr[1] ){
Console.WriteLine( " key :{0} \tvalue: {1} is OK ",ht[dr[0]],dr[1]);
}
}

Console.Write( "End ");
Console.Read();
}


}
------解决方案--------------------
如果是与另一个hashtable比较,而源数据有没有唯一的主键,那么就不要用hashTable了.假设源数据为DataTable
DataRow[] rows;
foreach(object key in Hashtable2.Keys)
{
rows=MyDataTable.Select( "a= ' " +(string)key + " ' and = ' " +(string)Hashtable2[key]+ " ', ";
if(rows.Length> 0)
{MessageBox.Show( "OK ");}
else
{MessageBox.Show( "NO ");}
}
------解决方案--------------------
private void Form1_Load(object sender, EventArgs e)
{
string sql = " ";
sql = "insert into Hashtable1(a,b) select a,b from table ";
System.Data.DataTable a = new DataTable();
sqlDataAdapter da = new sqlDataAdapter();
da.fill(a);
da.dispose();

string sqlstr = " ";
sqlstr = "select a1,b1 from Hashtable2 ";
System.Data.DataTable b = new DataTable();
sqlDataAdapter db = new sqlDataAdapter();
db.fill(b);
db.dispose();


bool panduan = false;
for (int i = 0; i < a.Rows.Count; i++)
{
for (int j = 0; j < b.Rows.Count; j++)
{
if (a.Rows[i][a] = b.Rows[j][a1])
{
if(a.Rows[i][b]=b.Rows[j