C# 从部分列表框项创建参数
我有一个列表框,其中的项目是不同列表框中两列(Game_ID+“-”+Name)的串联。因此,每个列表框项看起来像: 1-游戏#1 2-游戏2 10-游戏#10 100-游戏#100 我需要知道如何使参数仅作为列表项的game_ID部分。所以基本上我只需要连字符左边的部分C# 从部分列表框项创建参数,c#,sql,C#,Sql,我有一个列表框,其中的项目是不同列表框中两列(Game_ID+“-”+Name)的串联。因此,每个列表框项看起来像: 1-游戏#1 2-游戏2 10-游戏#10 100-游戏#100 我需要知道如何使参数仅作为列表项的game_ID部分。所以基本上我只需要连字符左边的部分 string newPGame = "INSERT INTO admin.promo_games(promo_ID, Game_ID) VALUES(@PID, @GameID)" SqlCommand
string newPGame = "INSERT INTO admin.promo_games(promo_ID, Game_ID) VALUES(@PID, @GameID)"
SqlCommand insGames = new SqlCommand(newPGame, misc);
insGames.Parameters.AddWithValue("@PID", txtID.Text);
insGames.Parameters.AddWithValue("@GameID", lstSelGames.SelectedValue);
foreach (string item in lstSelGames.Items)
{
insGames.ExecuteNonQuery();
}
您可以使用
Substring
和int.Parse
解析数字:
var itemText = lstSelGames.SelectedValue.ToString();
var numberString = itemText.Substring( itemText.IndexOf("-") );
var number = int.Parse(numberString);
更好的解决方案是创建一个表示列表中项目的类,然后在此处使用强类型实例:
public class Game
{
public int Id {get;set;}
public string Name {get;set;}
public override string ToString()
{
return Id + Name;
}
}
然后,SelectedValue
实际上将属于Game
类型:
var game = (Game)lstSelGames.SelectedValue;
//use game.Id
您可以使用
Substring
和int.Parse
解析数字:
var itemText = lstSelGames.SelectedValue.ToString();
var numberString = itemText.Substring( itemText.IndexOf("-") );
var number = int.Parse(numberString);
更好的解决方案是创建一个表示列表中项目的类,然后在此处使用强类型实例:
public class Game
{
public int Id {get;set;}
public string Name {get;set;}
public override string ToString()
{
return Id + Name;
}
}
然后,SelectedValue
实际上将属于Game
类型:
var game = (Game)lstSelGames.SelectedValue;
//use game.Id
为什么不让选择列表的SelectedValue(幕后值)就是那个值呢?这样,当您从表单中获得它时,它就是您所需要的。显示文本可以是任何你想要的,然后你不必解析它。你可能想要。而且
SqlCommand
是IDisposable
的,所以应该使用块在中。为什么不让select列表的SelectedValue(幕后值)就是这个值呢,这样当您从表单中获得它时,它就是您所需要的。显示文本可以是任何你想要的,然后你不必解析它。你可能想要。而且SqlCommand
是IDisposable
的,所以应该在使用块中。