使用LINQ

时间:2018-12-11 22:35:34

标签: c# winforms linq combobox listbox

我在网络上找不到我的问题的答案。

我有一个使用LINQ(存储过程)填充有SQL表的ListBox

我有一个ComboBox,其中也使用LINQ(存储过程)填充了一条SQL语句 问题在于ComboBox的存储过程需要ListBox的输入,而我似乎无法正确地强制转换它。

这是我的列表框的填充方式:

private void NouvelleReservation2_Load(object sender, EventArgs e)
    {
        ExamenSGBDEntities oExamenSgbdEntities = new ExamenSGBDEntities();
        listBoxRestaurant.DataSource = oExamenSgbdEntities.SelectAllRestaurants();
        listBoxRestaurant.DisplayMember = "RESTO";
        listBoxRestaurant.ValueMember = "idRestaurants";
        listBoxRestaurant.SelectedIndex = 0;
    }

这是我的ComboBox的填充方式:

private void listBoxRestaurant_SelectedIndexChanged(object sender, EventArgs e)
    {
        ExamenSGBDEntities oExamenSgbdEntities = new ExamenSGBDEntities();
        comboBoxTables.DataSource =
            oExamenSgbdEntities.SelectTablesByRestaurant(listBoxRestaurant.Items.Cast<Restaurant>()); //Here is where i'm struggling... I need to give the "idRestaurant" from the ListBox as parameter for my stored procedure.
        comboBoxTables.DisplayMember = "TABLECHAISE";
        comboBoxTables.ValueMember = "idTables";
    }

我尝试过在DataRowView中将selectedItem转换为整数,但是没有用。 现在已经尝试了您在代码中看到的内容,但无法使其正常工作。

有人可以帮我吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

而不是通过:

listBoxRestaurant.Items.Cast()...

您尝试过吗?

listBoxRestaurant.SelectedItem

答案 1 :(得分:0)

您似乎正在尝试将饭店列表传递到查询中,但是您说您需要id值?如果您需要一个id值(如在查询中接受一个输入),则应使用类似以下内容的

comboBoxTables.DataSource = oExamenSgbdEntities.SelectTablesByRestaurant(listBoxRestaurant.Items.Cast<Restaurant>().First().idRestaurant);

您可能会遇到强制转换错误,因为它无法将IEnumerable强制转换为int。

您还可以将SelectedItem强制转换用作Restaurant,然后按照Jon Vote的说明获取ID。

答案 2 :(得分:0)

不要尝试投射选定的列表项。而是使用选定的值:

UpdateTable() got an unexpected keyword argument 'range_partitioning'

然后,您可以通过此ID值从数据库中加载餐厅,并将其传递给您的listBoxRestaurant.SelectedValue 函数。