C# 将数据集结果存储在IList中
如何将数据集的结果存储在Ilist中C# 将数据集结果存储在IList中,c#,sql,asp.net-mvc,C#,Sql,Asp.net Mvc,如何将数据集的结果存储在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) { ............
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;
.........
}
Model read=new Model()
IList sqlprop=read.readrows(“从测试中选择*)。表[0]。Cast().ToList();
类模型
{
公共数据集读取行(字符串查询)
{
............
返回数据集;
}
}
类sqlprop
{
字符串data1get;set;
字符串数据2获取;设置;
.........
}
像这样的东西可以满足你的需要,我想
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();
List sqlprop=read
.readrows(“从测试中选择*)
.表格[0]
.行
.Cast()
.选择(r=>newsqlprop
{
data1=r.GetString(0),
data2=r.GetString(1)
})
.ToList();
您应该检查DBNull.Value,并可能在SQL查询中包含列名等,但是您知道了
更新
如果您需要它是泛型的,并且数据库中的列名与属性名完全匹配,您可以执行类似的操作(未经测试,我这里没有编译器,但它应该能让您了解):
List sqlprop=read
.readrows(“从测试中选择*)
.表格[0]
.行
.Cast()
.选择(r=>{
var ret=new sqlprop();
foreach(ret.GetType().GetProperties()中的var p)
{
object val=r[r.Table.Columns.IndexOf(p.Name)];
if(val!=DBNull.Value)
{
p、 设置值(ret、val、null);
}
}
返回ret;
})
.ToList();
注意:这是一个有点片状,并没有超高效率,但无论如何,它是 像这样的东西可以满足你的需要,我想
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();
List sqlprop=read
.readrows(“从测试中选择*)
.表格[0]
.行
.Cast()
.选择(r=>newsqlprop
{
data1=r.GetString(0),
data2=r.GetString(1)
})
.ToList();
您应该检查DBNull.Value,并可能在SQL查询中包含列名等,但是您知道了
更新
如果您需要它是泛型的,并且数据库中的列名与属性名完全匹配,您可以执行类似的操作(未经测试,我这里没有编译器,但它应该能让您了解):
List sqlprop=read
.readrows(“从测试中选择*)
.表格[0]
.行
.Cast()
.选择(r=>{
var ret=new sqlprop();
foreach(ret.GetType().GetProperties()中的var p)
{
object val=r[r.Table.Columns.IndexOf(p.Name)];
if(val!=DBNull.Value)
{
p、 设置值(ret、val、null);
}
}
返回ret;
})
.ToList();
注意:这是一个有点片状,并没有超高效率,但无论如何,它是 您的意思是“如何将
DataRow
转换为sqlprop
”?不清楚您的意思,并且您的代码示例存在很多问题,模糊了示例的意图。是的,将DataRow转换为sqlprop。请问,我是否回答了您下面的问题(最终)?如果是,您可以将其标记为已接受的答案如果不是,请让我知道如何进一步帮助。您的意思是“如何将DataRow
转换为sqlprop
”?不清楚您的意思,并且您的代码示例有很多问题模糊了示例的意图。是的,将DataRow转换为sqlprop。请问,我是否回答了您的问题(最终)如下?如果是这样,您可以将其标记为已接受的答案,如果不是,请让我知道如何进一步帮助。很好,但是否还有其他方法可以使其更具动态性?我有数百个sql查询,因此我不想手动编写…GetString(xxx)等等。有没有办法让它自动填入匹配的列/变量?@user719825听起来你好像不想使用数据集。是的,我同意可能有一种比使用数据集更好的方法,但你还是来了,享受吧!一个问题。我得到了一个答案.Cast()的“不包含Cast a的定义和最佳扩展方法重载”噢,对不起,您可能需要使用Rows属性-更新了代码很棒,但是否还有其他方法使其更具动态性?我有数百个sql查询,因此我不想手动编写…GetString(xxx)等等。有没有办法让它自动填入匹配的列/变量?@user719825听起来你好像不想使用数据集。是的,我同意可能有一种比使用数据集更好的方法,但你还是来了,享受吧!一个问题。我得到了一个“不包含Cast a的定义和最佳扩展方法重载“for.Cast()噢,对不起,您可能需要使用Rows属性-更新了代码