2011-12-19 118 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