1

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

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

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

谢谢!

4

2 回答 2

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();

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

于 2013-05-11T22:36:05.767 回答
3

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

Cast<int?>
OfType<int?>

如果元素之一不是 int?,则 Cast 将失败。OfType 返回仅包含 int 类型元素的 IEnumerable?从以前的数组。

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

int? [] newData = data.OfType<int?>().ToArray();
于 2013-05-11T22:59:50.390 回答