LINQ:将object []转换为int?[]

时间:2013-05-11 22:33:17

标签: c# linq

我有一个方法,其中一个参数是一个对象数组,例如object []数据。 所以我想用LINQ将它转换成int?数组,如何实现这一点。 我只需要跳过对象数组中的第一个元素。

例如,像这样的东西(它没有编译):

int?[] newData = data.Skip(1).Take(data.Length-1).ToArray<int?>();

谢谢!

2 个答案:

答案 0 :(得分:10)

我认为您不需要Take(data.Length - 1)

int?[] newData = data.Skip(1).Take(data.Length - 1).Cast<int?>().ToArray();

似乎

int?[] newData = data.Skip(1).Cast<int?>().ToArray();

就足够了(所有元素都期望第一个)。

答案 1 :(得分:3)

您可以使用以下两种方法之一:

Cast<int?>
OfType<int?>

如果其中一个元素不是int,则Cast会失败。 OfType返回IEnumerable,它只包含int类型的元素?来自上一个阵列。

那么如果你的数组包含int类型的元素?排除第一个元素,你可以使用

int? [] newData = data.OfType<int?>().ToArray();