0

我正尝试使用下面给出的代码从数据库中选择不同的行。当我运行这个查询时,它不会返回我所期望的结果。我需要不同的城市名称到下拉控制。如何从数据库中选择不同的行

using (var context = new CountryEntities()) 
     { 
      var city = (from u in context.Cities 
         where u.StateId == StateID 
         select new 
         { 
          cityId = u.CityId, 
          cityName = u.CityName 

         }).Distinct(); 


      cboCity.DataSource = city.ToList(); 
      cboCity.DataValueField = "CityId"; 
      cboCity.DataTextField = "CityName"; 
      cboCity.DataBind(); 
      cboCity.Items.Insert(0, new ListItem("--Select--", "0")); 
     } 

我的数据库表是

enter image description here

我应该做的。请帮帮我。 在此先感谢。

+3

是否有多个城市具有相同的“名称”但不同的“ID”? –

+0

表中有多个城市和多个stateId。 – Jaan

+0

那么,如果你有两个同名的城市,你使用哪个CityId?这是真正的问题。 –

回答

2

如果你必须保证没有重复的城市名称,你可以做这样的:

var city = context.Cities 
    .Where(u => u.StateId == StateID) 
    .GroupBy(u => u.CityName) 
    .Select(g => new { 
     cityId = g.First().CityId, 
     cityName = g.Key 
    }); 

然而,这丢掉一些城市名称重复的结果,因为只有一个cityId是去使用。

如果你想克服这个限制,你需要引入另一个列消除城市的消歧 - 例如,地区名称或邮政编码。然后,您需要更改代码,将此消歧标记附加到不能单独由其名称唯一标识的城市名称。

相关问题