C# 从组合框中选择数据,并在列表框c中向其显示信息

C# 从组合框中选择数据,并在列表框c中向其显示信息,c#,linq,combobox,listbox,C#,Linq,Combobox,Listbox,我遇到了一些问题,当用户在组合框中选择所选名称时,与所选名称链接的数据将显示在列表框中。我很难理解这种方法。错误就在这里 int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue); 错误:无法将类型为“f_AnonymousType2”2[System.String.System.Int32]的对象强制转换为类型为“System.IConvertible” private void cbLocStation_Selec

我遇到了一些问题,当用户在组合框中选择所选名称时,与所选名称链接的数据将显示在列表框中。我很难理解这种方法。错误就在这里

int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue);
错误:无法将类型为“f_AnonymousType2”2[System.String.System.Int32]的对象强制转换为类型为“System.IConvertible”

private void cbLocStation_SelectedIndexChanged(object sender, EventArgs e)
    {
        using (satsEntities Setupctx = new satsEntities())
        {
            int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue);

            var query = (from db in Setupctx.requiredtimings
                         join timing t in Setupctx.timings on db.RequiredTimingID equals t.TimingID
                         where db.RequiredLocationStationID == selectLocStation
                         select new
                         {
                             t.Time2
                         }).ToList();

            List<TimeSpan> lstSelectedTime = new List<TimeSpan>();

            foreach (var a in query)
            {
                lstSelectedTime.Add((TimeSpan)a.Time2);
            }

            lstTime.DataSource = lstSelectedTime;
        }
    }

任何帮助都将不胜感激。

如果可以使用to string,我将尝试此方法

int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue.ToString());
DataRowView drow = (DataRowView)cbLocStation.SelectedItem;
string str = drow.Row.ItemArray[0].ToString();
还是这个

int selectLocStation =Int32.Parse(cbLocStation.SelectedValue.ToString());
你也可以试试这个

int selectLocStation = Convert.ToInt32(cbLocStation.SelectedValue.ToString());
DataRowView drow = (DataRowView)cbLocStation.SelectedItem;
string str = drow.Row.ItemArray[0].ToString();
检查字符串是否有数字,并将其转换为int

您还可以添加数据绑定

BindingContext oBC = new BindingContext();
    cbLocStation.BindingContext = oBC;
    cbLocStation.DataBindings.Add(new Binding("SelectedValue", DeleteRT, "RequiredLocationStationID", false, DataSourceUpdateMode.OnPropertyChanged));

您正在尝试将匿名类型从查询转换为timespan,这是不可能的,因为它没有实现IConvertible。您可以编写一个包装类并在查询中选择该类

var query = (from db in Setupctx.requiredtimings
                         join timing t in Setupctx.timings on db.RequiredTimingID equals t.TimingID
                         where db.RequiredLocationStationID == selectLocStation
                         select new WrapperClass
                         {
                             Time = t.Time2
                         }).ToList();

public class WrapperClass
        {
            public DateTime Time { get; set; }
        }
其中time是在包装器类中定义的日期时间

  private void Edit_TS_Load(object sender, EventArgs e)
    {
        using (satsEntities Setupctx = new satsEntities())
        {
            var DeleteRT = (from DelRT in Setupctx.requiredtimings
                           join locationstationname ls in Setupctx.locationstationnames on DelRT.RequiredLocationStationID equals ls.locationstationID
                           select new {ls.locStatname, DelRT.RequiredLocationStationID}).Distinct().ToList();

            cbLocStation.DataSource = DeleteRT.ToList();
            cbLocStation.DisplayMember = "locStatname";
            cbLocStation.ValueMember = "RequiredLocationStationID";

        }
    }

答案就在这里

我尝试了你的方法,他们提示我另一个错误,说输入字符串的格式不正确。@rookie ohhh尝试检查字符串是否包含数字,否则使用int parseI我使用的是Windows窗体应用程序。@rookie我想问题是因为你使用的是databind你是指我用来绑定数据的数据源吗我的组合对吗?我尝试通过使用项使用其他方法。添加,但selectedValue与我的数据库不同,因此无法在所选名称下显示任何数据。编写WrapperClass是什么意思?能举几个例子吗?谢谢select new返回一个匿名类型,一个您无法对其执行操作的类型,例如您正在尝试完成的类型。相反,您应该根据需要编写一个从查询返回的类。然后您可以处理输出。我不能使用DateTime,因为我正在使用TimeSpan,如果我将DateTime更改为TimeSpan,仍然会提示错误。如何初始化组合框?您能告诉我们您的组合框包含哪些值吗?让我向您展示我在组合框中存储数据的代码。