2012-07-17 38 views
0
while (Running) 
{ 
    while (rdr.Read()) 
    { 
     List<PackageDetailFile> pkgFiles = rdr.Read().ToString().ToList(); 
    } 
} 

你好,read()返回一個內部連接表,它有7 8列,是否有可能將它們存儲在列表中? 如果我們能怎麼樣了rdr.read的正確鑄造(),(以字符串列表...?)在列表sql c存儲列#

+0

我不清楚這些對象的形狀是什麼或返回什麼類型。首先,'.ToString()。ToList()'會給你一個字符列表,這可能不是你想要的。 '.Read()'返回的類型是什麼?什麼是'rdr'?什麼是'PackageDetailFile'? – David 2012-07-17 11:51:10

+0

rdr是我的讀取執行的事情,read()返回一個整個表格,packagedetailfile也是我的數據庫中的一個表格,我真的很困惑自己,現在寫了一堆我混淆了的代碼。 – tipi 2012-07-17 11:54:34

+0

你想達到什麼目的?上面的代碼是沒有意義的,並沒有真正向我們展示你正在嘗試做什麼。你在數據庫中有一些列。他們是什麼?你想用他們做什麼?什麼數據庫?你想拉多少條記錄?你使用的是LINQ2SQL還是Entity Framework? – Arran 2012-07-17 12:06:07

回答

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],使您的代碼更具可讀性和測試友好性。

+0

仍然有可能異常:如果dataReader實例沒有行... – 2012-07-20 06:14:33

0

嘗試使用rdr對象的GetValues方法。我想rdr是一個SqlDataReader或另一個DataReader。

該方法返回一個包含當前行所有列的對象數組。 之後,您可以將對象數組存儲在對象列表中。如果要存儲另一種類型的列表,則必須在存儲它之前將每個元素都轉換爲正確的類型。