如何将SqlDataReader转换为List<>?

9
3个回答

11
using (var reader = cmd.ExecuteReader())
{
    var result = new List<Foo>();
    while (reader.Read())
    {
        var foo = new Foo 
        {
            Prop1 = reader.GetInt32(0),
            Prop2 = reader.GetString(1),
        }
        result.Add(foo);
    }
}

1
我喜欢这个,但更喜欢 result.Add( new Foo() { Prop1 = reader.GetInt32(0), Prop2 = reader.GetString(1) } ); - Justin

1

同时检查此先前提出的问题: 如何轻松将DataReader转换为List<T>?

检查此内容以获取一般类型:

public ConvertToList<T>(SqlDataReader sqldr, int index)
        {
            List<T> list = new List<T>();

            while (sqldr.Read())           {
               list.Add((T)sqldr.GetValue(index));               index++;   
            }

            return list;
        }

0

虽然这是一篇旧的讨论,但你可以试试这个方法。

强制类型转换你的字段,并将行转换为 DbDataRecord 对象。 例如:

                    Dim _Query = (From row In _Results.Cast(Of DbDataRecord)().AsParallel()
                            Select New uTyping.Profile() With {
                                .Id = row(0),
                                .Firstname = row(6)
                            }).ToList()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接