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());