如何将n个列表作为数据表的行

本文关键字:数据表 列表 | 更新日期: 2023-09-27 18:08:27

我想有一个泛型方法,实现以下目标:

我有n个Lists (string)我想让它们在相应的列下显示为Data Table的行。

下面的代码可能会使我的问题更清楚:

List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> list3 = new List<string>();
for (int num1 = 0; num1 < 4; num1++)
{
list1.Add(num1.ToString());
}
for (int num2 = 4; num2 < 8; num2++)
{
list2.Add(num2.ToString());
}
for (int num3 = 8; num3 < 12; num3++)
{
list3.Add(num3.ToString());
}
DataTable dtTable = new DataTable();
dtTable.Columns.Add("Column1", typeof(string));
dtTable.Columns.Add("Column2", typeof(string));
dtTable.Columns.Add("Column3", typeof(string));
for (int num4 = 0; num4 < list1.Count; num4++)
{
dtTable.Rows.Add(list1[num4], list2[num4], list3[num4]);
}
GridView2.DataSource = dtTable;
GridView2.DataBind();

在上述代码中,list1list2list3项分别作为Column1Column2Column3列下的行,如:

Column1 Column2 Column3
0       4        8
1       5        9
2       6        10
3       7        11

我需要大约50个列表,在50个不同的列下显示它们,最终将它们绑定到GridView

我不能继续手动添加列表作为行,即

dtTable.Rows.Add(list1[num4], list2[num4], list3[num4], list4[num4],.......,listn[num4]);

如何将上述内容推广到n个列表中?

请各位专家过来帮忙。

如何将n个列表作为数据表的行

你可以试试这个。创建一个方法来处理所有列表

private void PopulateGrid(params List<string>[] list)
{
    DataTable dtTable = new DataTable();
    for (int listIndex = 0; listIndex < list.Length; listIndex++)
    {
        dtTable.Columns.Add(string.Format("Column{0}", listIndex), typeof(string));
    }
    for (int rowIndex = 0; rowIndex < list[0].Count; rowIndex++)
    {
        DataRow dr = dtTable.NewRow();
        for (int listIndex = 0; listIndex < list.Length; listIndex++)
        {
            dr[listIndex] = list[listIndex][rowIndex];
        }
        dtTable.Rows.Add(dr);
    }
    dataGridView1.DataSource = dtTable;
}

然后创建一个主List,这样你就可以添加任何你想要的列表

List<List<string>> allLists = new List<List<string>>();
/* Code to populate the lists */    
allLists.Add(list1);
allLists.Add(list2);
allLists.Add(list3);
...
allLists.Add(listn);

然后调用方法

PopulateGrid(allLists.ToArray());