2011-12-19 261 views
4

我有一個Linq查詢針對從每行返回元素的DataRow []。看起來有點像這樣:如何將Linq數組[]轉換爲int []?

var query = from row in rows select row["Id"]; 

我打算將它轉換成一個int [],但下面的代碼生成錯誤:

int[] myIntArray = query.ToArray(); 

的錯誤是:

Cannot implicitly convert type object[] to int[] 

是否有一些聰明的技巧來完成這項工作?

回答

8

DataRow索引器(row[...])返回object而不是int
因此,您的隱式類型查詢是一組object s。

你需要明確選擇int S,這樣的:

int[] numbers = rows.Select(r => r.Field<int>("Id")).ToArray(); 

(或只是select (int)row["Id"]

+0

感謝。我並沒有意識到這個轉換在Linq查詢本身內是可以允許的。很有幫助! – 2011-12-19 17:21:30

+0

不客氣。 LINQ查詢可以有任意的表達式。 – SLaks 2011-12-19 17:45:16