C# Dbset参数的Linq表达式不起作用

C# Dbset参数的Linq表达式不起作用,c#,linq,lambda,C#,Linq,Lambda,x、 CityID无效,如何编写lambda表达式 private void adressComboBoxFill<T>(MetroComboBox varComboBox, System.Data.Entity.DbSet<T> dbSet, string place) where T : class { if (place == "City"){ varComboBox.DataSource = dbSet.To

x、 CityID无效,如何编写lambda表达式

    private void adressComboBoxFill<T>(MetroComboBox varComboBox, System.Data.Entity.DbSet<T> dbSet, string place) where T : class
    {
        if (place == "City"){
            varComboBox.DataSource = dbSet.ToList();
        } 
        else if (place == "District"){
            var type = dbSet.GetType();
            varComboBox.DataSource = dbSet.Where(x => x.CityID == selectedCity.CityID).ToList();
        }

        varComboBox.DisplayMember = place + "Name";
        varComboBox.ValueMember = place + "ID";
    }
private void adderscomboxfill(MetroComboBox varComboBox,System.Data.Entity.DbSet DbSet,string place),其中T:class
{
如果(地点=“城市”){
varComboBox.DataSource=dbSet.ToList();
} 
其他条件(地点=“地区”){
var type=dbSet.GetType();
varComboBox.DataSource=dbSet.Where(x=>x.CityID==selectedCity.CityID.ToList();
}
varComboBox.DisplayMember=place+“Name”;
varComboBox.ValueMember=place+“ID”;
}

您需要将以下行更改为

varComboBox.DataSource = dbSet.Cities.Where(x => x.CityID == selectedCity.CityID).ToList();

它是无效的,因为您正在向DBSet T传递泛型参数。它对城市一无所知

你需要使它非通用的,例如
城市数据集或任何东西。

您需要通过EntityList。为什么
var type=dbSet.GetType()这样做?