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是去使用。

如果你想克服這個限制,你需要引入另一個列消除城市的消歧 - 例如,地區名稱或郵政編碼。然後,您需要更改代碼,將此消歧標記附加到不能單獨由其名稱唯一標識的城市名稱。

相關問題