我有一个方法,其中一个参数是一个对象数组,例如object []数据。 所以我想用LINQ将它转换成int?数组,如何实现这一点。 我只需要跳过对象数组中的第一个元素。
例如,像这样的东西(它没有编译):
int?[] newData = data.Skip(1).Take(data.Length-1).ToArray<int?>();
谢谢!
答案 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();