C# 在实体框架中查询外键填充组合框

C# 在实体框架中查询外键填充组合框,c#,entity-framework,C#,Entity Framework,我有一个省的组合框: public Form1() { InitializeComponent(); using (AbEntities c = new AbEntities()) { comboBox1.DataSource = c.tbl_Province.ToList(); comboBox1.ValueMember = "ID"; comboBox1.DisplayMember = "Province"; }

我有一个省的组合框:

public Form1()
{
    InitializeComponent();
    using (AbEntities c = new AbEntities())
    {
        comboBox1.DataSource = c.tbl_Province.ToList();
        comboBox1.ValueMember = "ID";
        comboBox1.DisplayMember = "Province";
    }
}
现在我想在另一个组合框中列出每个省的城市

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedValue.ToString() != null)
    {
        int pvc = Convert.ToInt32(comboBox1.SelectedValue.ToString());
        string sqlString = "SELECT ID,City FROM tbl_City Where ProvinceID = pvc"

        using (AbEntities c = new AbEntities())
        {
            comboBox2.DataSource = c.tbl_City.ToList();
            comboBox2.ValueMember = "ID";
            comboBox2.DisplayMember = "City";
        }
    }
}

我编写了以下查询。但是城市不会被过滤

您需要查询您的数据库集,例如:

c.tbl_City.Where(c => c.ProvinceID == pvc).ToList();
进一步:

SQL语句和筛选器之间没有关系

你可能想读一些关于


下面是关于EF的更多信息:

我在您的代码中没有看到任何过滤。也许你应该这样做:

comboBox2.DataSource = c.tbl_City.Where(x=>x.ProvinceID == pvc).ToList();
说明:

代码中松散的SQL查询字符串没有应用程序。由于您的帖子被标记为
实体框架
,因此我假设
AbEntities
是一个
DataContext
。 在这种情况下,
tbl_City
实现了
IQueryable
接口,允许您直接在代码中调用
Where
。在本例中,我使用了方法语法。 调用
ToList()
将执行查询并具体化结果。 这也可以使用查询语法完成:

comboBox2.DataSource = (from   x in c.tbl_City
                        where  x.ProvinceID == pvc
                        select x).ToList();

SQL字符串是怎么回事?除息的