【发布时间】:2014-06-01 00:17:13
【问题描述】:
我想将数据从 DataTable 检索到一个列表中,我使用了两种方法
第一个是:
SqlDataAdapter dataadapter;
DataSet dataset = new DataSet();
public List<Groupe> displayGrp()
{
DataTable data = new DataTable();
Requete = "select * from Groupe ";
dataadapter = new SqlDataAdapter(Requete, cnx.cnx);
dataadapter.Fill(dataset, "TGroupe");
data = dataset.Tables["TGroupe"];
for (int i = 0; i <data.Rows.Count; i++)
{
Program.listgrp[i].Codegroupe = int.Parse(data.Rows[i][0].ToString());
Program.listgrp[i].Nom = data.Rows[i][1].ToString();
Program.listgrp[i].Année = int.Parse(data.Rows[i][2].ToString());
}
return Program.listgrp;
}
但当我尝试调用此方法时出现错误,错误是:
索引超出范围。它不能是负数,并且必须小于集合的大小。 参数名称:索引
但是当我使用这样的 foreach 方法时:
SqlDataAdapter dataadapter;
DataSet dataset = new DataSet();
public List<Groupe> displayGrp()
{
DataTable data = new DataTable();
Requete = "select * from Groupe ";
dataadapter = new SqlDataAdapter(Requete, cnx.cnx);
dataadapter.Fill(dataset, "TGroupe");
data = dataset.Tables["TGroupe"];
foreach (DataRow row in data.Rows)
{
Program.listgrp.Add(new Groupe { Nom = (row["Nom"].ToString()), Codegroupe = int.Parse(row["Codegroupe"].ToString())
, Année = int.Parse(row["Année"].ToString()) });
}
return Program.listgrp;
}
一切都很好,我想知道问题出在哪里,为什么第一个方法不成功
程序类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace Gestion_stagiaire
{
static class Program
{
/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
///
public static List<Groupe> listgrp = new List<Groupe>();
public static List<Stagiaire> liststagiaire = new List<Stagiaire>();
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
【问题讨论】:
-
您是否尝试过使用 Visual Studio 调试器查看问题所在?这应该是一个非常简单的调试问题。您正在尝试访问一个不存在的索引。
-
这是问题,我不知道为什么索引不存在并且我有 i=0 我不知道他为什么告诉我索引不存在并且循环是正确的
-
正如我所说,这就是错误的原因。您需要逐步使用 Visual Studio 调试器并找出 为什么 索引超出范围。我的猜测是
Program.listgrp没有足够的长度来完成你正在做的作业。 -
我已经添加了一个包含 listgrp 的程序类,我可以做些什么来获得足够的长度
标签: c# sql-server list datatable ado.net