将SqlCommand输出转换为List

| 我正在将ADO.NET SqlCommand与单个SqlDbType.Structured参数一起使用,以将表值参数发送到sproc。 sproc返回许多行,我需要进入的强类型列表。将结果集(无论是DataAdapter的DataTable还是DataReader位)转换为List的最佳方法是什么? 谢谢。     
已邀请:
您可以将LINQ与DataReader一起使用:
var list = reader.Cast<IDataRecord>()
                 .Select(dr => new YourType { 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;
    
我认为您可以使用
Dapper
将查询转换为类。 有关更多信息,请参见此链接中的答案     

要回复问题请先登录注册