如何将Linq数组[]转换为int[]?

4

我有一个针对 DataRow[] 的 Linq 查询,返回每行的元素。大致如下:

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

我想将这个转换为int[],但是下面的代码会生成一个错误:
int[] myIntArray = query.ToArray();

错误信息如下:
Cannot implicitly convert type object[] to int[]

有没有什么聪明的技巧可以让这个工作起来?
1个回答

8

DataRow的索引器(row[...])返回的是object,而不是int
因此,你隐式类型的查询结果是一组object

你需要明确选择int类型,像这样:

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

(或者只需 select (int)row["Id"]

谢谢。我之前没有意识到在 Linq 查询内部进行转换是可行的。非常有帮助! - Stephen Gross
不用谢。LINQ查询可以具有任意表达式。 - SLaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接