Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从部分列表框项创建参数_C#_Sql - Fatal编程技术网

C# 从部分列表框项创建参数

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

我有一个列表框,其中的项目是不同列表框中两列(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 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
的,所以应该在
使用块中。