如何将Linq array []转换为int []?

Ste*_*oss 4 linq

我有一个针对DataRow []的Linq查询,它返回每行的元素.看起来有点像这样:

var query = from row in rows select row["Id"];
Run Code Online (Sandbox Code Playgroud)

我想将其转换为int [],但以下代码生成错误:

int[] myIntArray = query.ToArray();
Run Code Online (Sandbox Code Playgroud)

错误是:

Cannot implicitly convert type object[] to int[]
Run Code Online (Sandbox Code Playgroud)

是否有一些巧妙的技巧使这项工作?

SLa*_*aks 8

DataRow索引(row[...])返回object,没有int.
因此,您的隐式类型查询是一组objects.

您需要显式选择ints,如下所示:

int[] numbers = rows.Select(r => r.Field<int>("Id")).ToArray();
Run Code Online (Sandbox Code Playgroud)

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