日期:2014-05-18  浏览次数:21077 次

split分割后,与数据库对照得到值
比如表city
ID CITY
1 北京
2 上海
3 天津
4 重庆
5 大连

表USER
ID CITY
1 北京 朝阳 光明
2 上海 扑东  
3 天津 南开 123
4 天津 河西 AAA
5 大连 CCC AAAAA

我用split分割空格,得到USER表里的CITY后,如何和表CITY对比,取得CITY的ID?

SqlCommand cmd = new SqlCommand("select top 100 * from user", MSSQLConn);
  SqlDataReader MyReader = cmd.ExecuteReader();
  while (MyReader.Read())
  {
  StringBuilder RowInfo = new StringBuilder();
  for (int i = 0; i < MyReader.FieldCount; i++)
  {
  RowInfo.Append(" " + MyReader[i].ToString());
  }
  string c = MyReader["city"].ToString();
  string[] sArray = c.Split(' ');

下面应该怎么写?

------解决方案--------------------
头一次见到你这种保存城市名字而不是ID的~~~~

你可以先把City表中的数据都拿出来放到一个Dictionary中

key是城市名称 value是ID
然后就可以取得ID了

或者

你先把所有的string[] sArray 保存起来
然后等你的Reader读完后
在写一个SQL文,去取包含在你这个数组里面的城市名称对应的城市ID

List<string[]> cities = new List<string[]>();
SqlCommand cmd = new SqlCommand("select top 100 * from user", MSSQLConn); 
SqlDataReader MyReader = cmd.ExecuteReader(); 
while (MyReader.Read()) 

StringBuilder RowInfo = new StringBuilder(); 
for (int i = 0; i < MyReader.FieldCount; i++) 

RowInfo.Append(" " + MyReader[i].ToString()); 

string c = MyReader["city"].ToString(); 
cities.Add(c.Split(' ')); 
}
MyReader.Close();

StringBuilder sb = new StringBuilder();
foreach(string[] city in cities)
{
foreach(string c in city)
{
sb.Append("," + c);
}
}
sb.Append(",");

string sql = String.Format("select * from city where charindex(',' + city + ',',{0}) > 0",sb.ToString());