我在dataService层中有一个下面的方法:
public DataTable retTable ()
{
DataTable dt = new DataTable();
adap.Fill(dt);
return dt;
}
因为我应该在业务层添加(使用Data)名称空间。我想把它改成:
public List<DataTable> retTable()
{
DataTable dt = new DataTable();
adap.Fill(dt);
List<DataTable> lst = new List<DataTable>();
lst.AddRange(dt);
return lst ;
}
但我在
中有错误lst.AddRange(dt);
我该如何解决?
答案 0 :(得分:2)
这样可以解决问题
lst.Add(dt);
通过AddRange(dt)
,您可以添加DataTable
的集合。
但DataSet
本身是DataTable
的集合。那么为什么要使用List
重新发明轮子。只需像这样返回DataSet
public DataSet retSet()
{
DataSet ds = new DataSet();
adap.Fill(ds);
return ds;
}
即使您仍想要返回列表,也可以
public List<DataTable> retTable()
{
DataSet dt = new DataSet();
adap.Fill(ds);
List<DataTable> lst = new List<DataTable>();
lst.AddRange(ds.Tables.AsEnumerable());
return lst;
}
答案 1 :(得分:1)
尝试以下
public List<DataRow> retTable()
{
DataTable dt = new DataTable();
adap.Fill(dt);
return dt.AsEnumerable().ToList();
}
但由于system.Data
DataRow
你可以在这种情况下使用自定义类,如下所示
List<MyClass> myClass= new List<MyClass>();
myClass = (from DataRow row in dt.Rows
select new MyClass
{
MyProperty1= row["MyColumn1"].ToString(),
MyProperty2= row["MyColumn12"].ToString()
}).ToList();
然后从我们的方法
返回此列表答案 2 :(得分:1)
因为table是2D矩阵,所以我们应该返回2D List:
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 ;
}