在组合框中引用值时LINQ查询出错

时间:2015-12-16 15:53:27

标签: c# winforms entity-framework linq combobox

我在使我的组合框正确级联时遇到了一些麻烦。我正在使用WinForms与实体框架代码优先,我正在努力让第二个组合框正常工作。我的类别模型如下所示:

public class Category
{
    [Key]
    public int ID { get; set; }

    [Required]
    public string CategoryName { get; set; }
}

我的子类别如下所示:

public class SubCategory
{
    [Key]
    public int ID { get; set; }

    public virtual Category Category { get; set; }

    [Required]
    public string SubCategoryName { get; set; }
}

在类别组合框的SelectedIndexChanged事件中,我尝试了以下代码:

cmboSubCategory.DataSource = ( from sc in db.SubCategories.AsEnumerable()
                                where sc.Category == int.Parse( cmboCategory.SelectedValue.ToString() )
                                select sc ).ToList();

但是编译器告诉我

Operator '==' cannot be applied to operands of type 'Category' and 'int'

在数据库中查看SubCategories表中的FK字段名为Category_ID但是当我尝试使用此字段名称时,编译器会抱怨该字段不存在。如何使用模型中定义的虚拟字段名称进行查找?我做错了什么?

2 个答案:

答案 0 :(得分:3)

无法使用int等于Category对象。使用id检查是否等于。

我认为你遗失了.ID

where sc.Category.ID == int.Parse( cmboCategory.SelectedValue.ToString() )

答案 1 :(得分:0)

无法检查Category对象与int的相等性。使用id检查它们是否相等。

将ID属性添加到sc.Category

cmboSubCategory.DataSource = ( from sc in db.SubCategories.AsEnumerable()
                            where sc.Category.ID == int.Parse( cmboCategory.SelectedValue.ToString() )
                            select sc ).ToList();