2014-03-27 59 views
-1

我想這個代碼,但沒能做到這一點:如何將datatable轉換爲列表<String>?

SPDatalogic sp = new SPDatalogic(); //datalogic class 
List<String> dt = new List<String>(); 
dt = sp.CheckProduct(id); //Datatable 

List<String> list = new List<String>(); 

SPBusinesslogic ab = new SPBusinesslogic(); //businesslogic class 
String prod; 
prod = ab.CheckProduct(id);     
list.Add(prod); 

return list; 

了簡單的錯誤,如不能隱蔽數據表串 我不知道如何做到這一點的想法。

錯誤:
錯誤1:

無法隱式轉換類型 'System.Collections.Generic.List' 到 '字符串'

錯誤2:

不能隱式地將類型'System.Data.DataTable'轉換爲 'System.Collections.Generic.List'

+3

請給我們完整的錯誤嗎? – CydrickT

+1

請給我們完整的錯誤,用它更新你的問題。 **不要將它作爲評論發佈**。如果你沒有對行做任何事情,你爲什麼要循環使用'dt.Rows'? – mason

+0

ab.CheckProduct(id);可能不會返回一個字符串。你也許可以使用ab.CheckProduct(id).toString();根據它通常返回的數據將其轉換爲字符串。 – CydrickT

回答

1

這段代碼似乎有很多錯誤。讓我們先從頂部:

SPDatalogic sp = new SPDatalogic(); //datalogic class 
List<String> dt = new List<String>(); 
dt = sp.CheckProduct(id); 
List<String> list = new List<String>(); 

dt顯然是一個List<String>,並sp.CheckProduct()顯然返回DataTable,這當然不能被隱式轉換爲List<String>。你後來似乎想要遍歷DataTableRows屬性。因此,必須修復:

SPDatalogic sp = new SPDatalogic(); //datalogic class 
DataTable dt; 
dt = sp.CheckProduct(id); 
List<String> list = new List<String>(); 

現在,您就可以遍歷dt.Rows建立你List<>

foreach (DataRow dr in dt.Rows) 
{ 
    SPBusinesslogic ab = new SPBusinesslogic(); //businesslogic class 
    string prod; 
    prod = ab.CheckProduct(id);     
    list.Add(prod); 
} 

這應該工作正常(雖然我懷疑有你需要聲明ab環路內的任何原因),但目前還不清楚是什麼id是。也許這就是你行中的某種列?如果是這樣,你可能想是這樣的:

var id = dr["id"]; 
string prod = ab.CheckProduct(id); 
list.Add(prod); 

這當然,假設ab.CheckProduct()需要一個對象,並返回一個字符串。如果這不起作用,您需要發佈方法簽名CheckProduct()

+1

對於OP來說,讓CheckProduct()返回一個類中的「字符串」和另一個類中的「List 」是令人困惑的。一個更好的方法是使用'CheckProductList()'(或簡單的'CheckProducts()')來指明列表。 –

+0

謝謝。身份證是在我的意義上的發票號碼通過我將拿起那個特殊的發票 –

+0

幾乎在那裏的產品!我仍然有1個錯誤 不能隱式地將類型'System.Collections.Generic.List '轉換爲'字符串' –

相關問題