SQL ADO.NET 中的服务器查询仅返回一个结果

SQL Server query in ADO.NET only returning one result

我正在使用 ado.net 学习 asp.net mvc,我的存储库中有这个方法 class

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);
    }

你需要一个 while 循环。

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