将数据从SQL Server存储过程检索到数组中

时间:2015-03-16 22:11:24

标签: c# asp.net sql-server linq

我试图从我的数据库中获取数据并将其放入数组中。

我试过这段代码:

DataClassesDataContext DS = new DataClassesDataContext();

protected void Page_Load(object sender, EventArgs e)
{
    List<string> _news = new List<string>();

    for (int i = 0; i <= 4; i++)
    {
        _news.Add(DS.select_top_five_news().ElementAt(i).ToString());
    }
}    

但它没有返回我想要的东西并给我这个错误:

  

指定的参数超出了有效值的范围   参数名称:index

这是我使用的存储过程:

CREATE PROCEDURE select_top_five_news
AS  
   RETURN 
       SELECT top 5 * 
       FROM news 
       ORDER BY newsid DESC

问题是存储过程的结果是作为单个结果返回的,而我需要循环到它来获取每个单独的记录

请帮忙!或者另一种方式是同一个目标吗?

1 个答案:

答案 0 :(得分:0)

由于您的程序已经为您过滤了数据,因此您只需执行以下操作即可。您的程序最多会返回5个结果,因此您收到的内容就是您获得的结果。如果您需要默认实体,则必须循环并添加缺失的项目,而不是从结果中提取现有项目。

DataClassesDataContext DS = new DataClassesDataContext();
protected void Page_Load(object sender, EventArgs e)
{
    var _news = DS.select_top_five_news().ToList();
}

如果您直接使用实体,则执行此操作。

DataClassesDataContext DS = new DataClassesDataContext();
protected void Page_Load(object sender, EventArgs e)
{
    var _news = DS.News.OrderBy(n => n.ID).Take(5).ToList();
}