使用linq join query

时间:2015-12-16 17:18:51

标签: c# winforms linq

我使用LINQ Join查询绑定ComboBox。以下是我的代码:

var list = (from a in context.tbl_Products
            join c in context.tbl_CurrentStock on a.ProductID equals c.ProductID
            where c.Qty > 0
            select new
            {
                ProductID = a.ProductID,
                ProductName = a.ProductName
            }).ToList();

cmbProduct.DataSource = list;
cmbProduct.ValueMember = "ProductID";
cmbProduct.DisplayMember = "ProductName";
cmbProduct.SelectedIndex = -1;

表详情: tbl_Products:ProductID,产品名称

Data in table

1,ABC
2,BCA
3,CDA

tbl_CurrentStock:StockID,ProductID,Qty

Data in table:

1,1,5
2,2,10
3,3,50

我正在使用cmbProduct.SelectedValue,如下所示:

int ProductID = Convert.ToInt32(cmbProduct.SelectedValue);
var Product = context.tbl_Products.Single(o => o.ProductID == ProductID);

直到这里它没事。在组合框中我选择了“ABC”,但是我得到cmbProduct.selectedvalue值为2而不是1.同样如果我选择第二个产品获取值为3而不是2,它没有给出选定的值,而是在列表中给出第一个值。可能是什么问题呢?这很傻,吃了我的脑袋。当我不使用JOIN Query时(如果我只绑定一个表中的数据),这工作正常 在此先感谢

1 个答案:

答案 0 :(得分:0)

将combobox的sorted属性更改为false后问题已解决。 Combobox正在对产品名称进行排序,但不对产品ID进行排序。这引起了问题。 -