0
while (Running)
{
    while (rdr.Read())
    {
        List<PackageDetailFile> pkgFiles = rdr.Read().ToString().ToList();
    }
}

您好, read() 返回一个包含 7 8 列的内部连接表,是否可以将它们存储在 List 中?如果我们能正确转换 rdr.read(), ( to string to list ... ? )

4

2 回答 2

1

根据你的PackageDetailFile类的结构和基础数据,你可以做这样的事情

var packageDetailFiles = new List<PackageDetailFile>();

while (Running)
{
    while (rdr.Read())
    {
        var detailFile = new PackageDetailFile();

        // the following will depend on your data structure and class properties
        detailFile.Property1 = rdr.GetString(0);
        detailFile.Property2 = rdr.GetString(1);
        detailFile.Property3 = rdr.GetString(2);

        packageDetailFiles.Add(detailFile);
    }
}

注意:您可以使用 AutoMapper 之类的程序集从数据读取器映射到 POCO,从而减少繁琐的工作,MyObject.MyProperty = dataReader[collectionIndex]使您的代码更具可读性和测试友好性。

于 2012-07-17T11:57:22.883 回答
0

尝试使用 rdr 对象的 GetValues 方法。我想 rdr 是一个 SqlDataReader 或另一个 DataReader。

此方法返回一个对象数组,其中包含当前行的所有列。在它之后,您可以将对象数组存储在对象列表中。如果要存储在另一种类型的列表中,则必须在存储之前将每个元素转换为正确的类型。

于 2012-07-17T11:59:51.857 回答