Linq to sql 将SqlCommand输出转换为列表<;MyType>;?
我使用一个ADO.NET SqlCommand和一个SqlDbType.Structured参数向存储过程发送一个表值参数。存储过程返回许多行,我需要将这些行放入一个强类型的行列表中。将结果集(无论是来自DataAdapter的DataTable还是DataReader位)转换为List的最佳方式是什么Linq to sql 将SqlCommand输出转换为列表<;MyType>;?,linq-to-sql,list,sqlcommand,sqldbtype,Linq To Sql,List,Sqlcommand,Sqldbtype,我使用一个ADO.NET SqlCommand和一个SqlDbType.Structured参数向存储过程发送一个表值参数。存储过程返回许多行,我需要将这些行放入一个强类型的行列表中。将结果集(无论是来自DataAdapter的DataTable还是DataReader位)转换为List的最佳方式是什么 谢谢。您可以将LINQ与DataReader一起使用: var list = reader.Cast<IDataRecord>() .Select(
谢谢。您可以将LINQ与DataReader一起使用:
var list = reader.Cast<IDataRecord>()
.Select(dr => new YourType { Name = dr.GetString(0), ... })
.ToList();
var list=reader.Cast()
.Select(dr=>newyourtype{Name=dr.GetString(0),…})
.ToList();
最有效的方法是使用datareader:
var items = new LinkedList<MyClass>();
using(var connection = GetConnection()) {
using(var cmd = connection.CreateCommand()){
cmd.CommandText = "... your SQL statement ...";
// ... add parameters
cnn.Open();
using(var reader = cmd.ExecuteReader()) {
// accessing values via number index is most efficient
//gets index of column with name "PrimaryKey"
var ndxPrimaryKey = reader.GetOrdinal("PrimaryKey");
var ndxColumn1 = reader.GetOrdinal("Column1");
var ndxColumn2 = reader.GetOrdinal("Column2");
while(reader.Read()) {
var item = new MyClass();
// returns value of column "PrimaryKey" typed to nullable Guid
item.PrimaryKey = reader.GetValue(ndxPrimaryKey) as Guid?;
item.Column1 = reader.GetValue(ndxColumn1) as string;
item.Column2 = reader.GetValue(ndxColumn2) as int?;
items.AddLast(item);
}
}
cnn.Close();
}
}
return items;
var items=newlinkedlist();
使用(var connection=GetConnection()){
使用(var cmd=connection.CreateCommand()){
cmd.CommandText=“…您的SQL语句…”;
//…添加参数
cnn.Open();
使用(var reader=cmd.ExecuteReader()){
//通过数字索引访问值是最有效的
//获取名为“PrimaryKey”的列的索引
var ndxPrimaryKey=reader.GetOrdinal(“PrimaryKey”);
var ndxColumn1=reader.GetOrdinal(“Column1”);
var ndxColumn2=reader.GetOrdinal(“Column2”);
while(reader.Read()){
var item=new MyClass();
//返回键入为可空Guid的列“PrimaryKey”的值
item.PrimaryKey=reader.GetValue(ndxPrimaryKey)作为Guid?;
item.Column1=reader.GetValue(ndxColumn1)作为字符串;
item.Column2=reader.GetValue(ndxColumn2)作为int?;
items.AddLast(item);
}
}
cnn.Close();
}
}
退货项目;
我认为可以使用Dapper
将查询转换为类
有关更多信息,请参见我在中的答案数据集可能是您最好的朋友,但数据集有点糟糕……事实证明,这很像-谢谢大家!劳伦斯:嗯,为什么不呢?如果你真的想使用循环,你可以。LINQ不是LINQ到SQL。