C#使用array.WhereinArraylist
c#
我在 C# 中有一组带有数组的代码,我需要将数组拆分为更小的数组。声明数组时我没有错误:
List<int> array = new List<int>();
但是,代码执行在数组中提示错误。当我声明为时:
var array = new ArrayList();
有什么办法可以使用数组。数组列表中的位置?下面是我的代码:
List<int> array = new List<int>();
for (int i = 0; i <=20; i++){
if (unitIsPresent)
{
array.add(1);
}
else
{
array.add(0)
}
}
devidedArray = array.Where((e, i) => i >= 5 && i < 10).ToArray();
回答
Array List 是一种非通用集合类型,因此最好将项目存储在不考虑项目类型的数组中。因此,出于这个原因,您不能使用用于泛型集合(如 Where)的 Linq 方法。我的建议是使用 List 并使用提供的 Linq 方法将其转换为 Array。这种方式非常快。
回答
如果您真的想使用ArrayList(真的?为什么?),您可以使用OfType<int>()将 更改IEnumerable为IEnumerable<int>。
var devidedArray = array.OfType<int>().Where((e, i) => i >= 5 && i < 10).ToArray();
或者,您可以使用Cast<int>():
var devidedArray = array.Cast<int>().Where((e, i) => i >= 5 && i < 10).ToArray();
两者之间的区别在于,OfType()会默默地忽略无法强制转换的对象,int而Cast()会以InvalidCastException.