Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DataTable转换为通用列表_C#_List_Datatable_Generic List - Fatal编程技术网

C# 将DataTable转换为通用列表

C# 将DataTable转换为通用列表,c#,list,datatable,generic-list,C#,List,Datatable,Generic List,我在dataService层中有以下方法: public DataTable retTable () { DataTable dt = new DataTable(); adap.Fill(dt); return dt; } 因为我应该在业务层中添加使用数据名称空间。我想把它改成: public List<DataTable&g

我在dataService层中有以下方法:

public  DataTable retTable ()
    {            
            DataTable dt = new DataTable();
            adap.Fill(dt);
            return dt;                       

    }
因为我应该在业务层中添加使用数据名称空间。我想把它改成:

public List<DataTable> retTable()
    {

        DataTable dt = new DataTable();
        adap.Fill(dt);
        List<DataTable> lst = new List<DataTable>();
        lst.AddRange(dt);
        return lst ;

    }

我怎样才能解决它呢?

这样就可以解决问题了

lst.Add(dt);
通过AddRangedt,您可以添加数据表的集合

然而,数据集本身是数据表的集合。那为什么要用列表来重新发明轮子呢。只需像这样返回数据集

即使你仍然想返回列表,你也可以这样做

public List<DataTable> retTable()
{
    DataSet dt = new DataSet();
    adap.Fill(ds);
    List<DataTable> lst = new List<DataTable>();
    lst.AddRange(ds.Tables.AsEnumerable());
    return lst;
}

这将解决问题

lst.Add(dt);
通过AddRangedt,您可以添加数据表的集合

然而,数据集本身是数据表的集合。那为什么要用列表来重新发明轮子呢。只需像这样返回数据集

即使你仍然想返回列表,你也可以这样做

public List<DataTable> retTable()
{
    DataSet dt = new DataSet();
    adap.Fill(ds);
    List<DataTable> lst = new List<DataTable>();
    lst.AddRange(ds.Tables.AsEnumerable());
    return lst;
}
试试下面

public List<DataRow> retTable()
{
    DataTable dt = new DataTable();
    adap.Fill(dt);
    return dt.AsEnumerable().ToList();
}
然后从我们的方法返回此列表

请尝试下面的方法

public List<DataRow> retTable()
{
    DataTable dt = new DataTable();
    adap.Fill(dt);
    return dt.AsEnumerable().ToList();
}

然后从我们的方法返回这个列表

,因为表是2D矩阵,所以我们应该返回2D列表:

public List<List<string >> retListTable()
    {

        DataTable dt = new DataTable();
        adap.Fill(dt);

        List<List<string>> lstTable = new List<List<string>>();

        foreach (DataRow row in dt.Rows)
        {
            List<string> lstRow = new List<string>();
            foreach (var item in row.ItemArray )
            {
                lstRow.Add(item.ToString().Replace("\r\n", string.Empty));
            }
            lstTable.Add(lstRow );
        }

        return lstTable ;

    }

因为表是2D矩阵,所以我们应该返回2D列表:

public List<List<string >> retListTable()
    {

        DataTable dt = new DataTable();
        adap.Fill(dt);

        List<List<string>> lstTable = new List<List<string>>();

        foreach (DataRow row in dt.Rows)
        {
            List<string> lstRow = new List<string>();
            foreach (var item in row.ItemArray )
            {
                lstRow.Add(item.ToString().Replace("\r\n", string.Empty));
            }
            lstTable.Add(lstRow );
        }

        return lstTable ;

    }

如果要添加单个DataTable对象,请使用List.add是否确实要创建DataTable的列表?或者你想从数据表中提取行列表?@Steve-hmm,我认为行列表更好!因为我想要2D矩阵。现在我该怎么办呢?最好的方法是投入一些时间来实现ORM工具。您可以轻松地使用简单、快速和真正的救命稻草,也可以选择更复杂的救命稻草,但如果具有更多功能(如添加单个DataTable对象),请使用List.add是否确实要创建DataTable列表?或者你想从数据表中提取行列表?@Steve-hmm,我认为行列表更好!因为我想要2D矩阵。现在我该怎么办呢?最好的方法是投入一些时间来实现ORM工具。您可以轻松地使用简单、快速和真正的救星,也可以选择更复杂的方法,但具有更多功能,例如,因为此方法是公共的,列数和类名未知。不幸的是,我不知道通用列表中的lambda代码。你能给我确切的代码吗?因为这个方法是公共的,列数和类名是未知的。不幸的是,我不知道通用列表中的lambda代码。你能给我确切的密码吗?