Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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# 在组合框中引用值时LINQ查询出错_C#_Winforms_Entity Framework_Linq_Combobox - Fatal编程技术网

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

C# 在组合框中引用值时LINQ查询出错,c#,winforms,entity-framework,linq,combobox,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 i

我在使组合框正确层叠时遇到一些问题。我首先将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; }
}
我的子类别如下所示:

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,但当我尝试使用此字段名时,编译器会抱怨该字段不存在。如何使用模型中定义的虚拟字段名进行查找?我做错了什么?

不可能将类别对象与int相等。请使用id检查是否等于

我认为您缺少
.ID


其中sc.Category.ID==int.Parse(cmboCategory.SelectedValue.ToString())
无法检查类别对象与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();