如何将数据集中的结果存储在Ilist中?
Model read = new Model()
IList<sqlprop> sqlprop= read.readrows("SELECT * FROM test").Tables[0].Cast<DataRow>().ToList();
Class Model
{
public DataSet readrows(string query)
{
............
return dataset;
}
}
Class sqlprop
{
string data1 get;set;
string data2 get;set;
.........
}
答案 0 :(得分:5)
像这样的东西会做你想要的我认为......
List<sqlprop> sqlprop= read
.readrows("SELECT * FROM test")
.Tables[0]
.Rows
.Cast<DataRow>()
.Select(r => new sqlprop
{
data1 = r.GetString(0),
data2 = r.GetString(1)
})
.ToList();
你应该检查DBNull.Value,并且可能在SQL查询等中包含列名,但是你明白了。
<强>更新强>
如果你需要它是通用的,并且数据库中的列名与属性名完全匹配,你可以做类似这样的事情(未经测试,我这里没有编译器,但它应该给你这个想法):
List<sqlprop> sqlprop= read
.readrows("SELECT * FROM test")
.Tables[0]
.Rows
.Cast<DataRow>()
.Select(r => {
var ret = new sqlprop();
foreach (var p in ret.GetType().GetProperties())
{
object val = r[r.Table.Columns.IndexOf(p.Name)];
if (val != DBNull.Value)
{
p.SetValue(ret, val, null);
}
}
return ret;
})
.ToList();
注意:这有点不稳定而且效率不高但无论如何,它就是它!