2015-09-10 2 views
0

Я изучаю ASP.NET MVC с ADO.NET, у меня есть этот метод в моем хранилище классаSQL в ADO.NET возвращает только один результат

public IEnumerable<int?> GetAllUniqueYears() 
{ 
    using (IDbConnection dbConnection = dbConnectionFactory.CreateConnection()) 
    { 
     using (IDbCommand cmd = dbConnection.CreateCommand()) 
     { 
      cmd.CommandText = "SELECT DISTINCT YEAR(DateAdded) As Year FROM GeoCounters"; 
      cmd.CommandTimeout = 1000; 

      using (IDataReader reader = cmd.ExecuteReader()) 
      { 
       if (!reader.Read()) 
       { 
        yield return null; 
       } 
       else 
       { 
        yield return (int)reader["Year"]; 
       } 
      } 
     } 
    } 
} 

Когда я загружаю мой взгляд, это получил только один результат, но при запуске запроса в среде SQL Server Management Studio, есть 4 результаты

действие контроллера

public ActionResult Index() 
{ 
     HomeIndexViewModel model = new HomeIndexViewModel() 
     { 
      GeoCounterDefinitions = geodefrepo.GetAll() 
      .Select((x,y) => new SelectListItem 
       { 
        Text = x.Id + " " + x.FriendlyDesc, 
        Value = (y + 1).ToString() 
       }), 
      Years = geocounterrepo.GetAllUniqueYears() 
      .Select(x => new SelectListItem 
      { 
       Text = x.ToString(), 
       Value = x.ToString() 
      }) 
     }; 

     return View(model); 
    } 

ответ

2

Вам нужно время цикла.

using (IDataReader reader = cmd.ExecuteReader()) 
{ 
    while (reader.Read()) 
    { 
     yield return (int)reader["Year"]; 
    } 
} 
+0

Я знал, что это будет что-то простое, спасибо :) – Goodsoup

Смежные вопросы