Tengo conjuntos de códigos en C# con matriz y necesito dividir la matriz en una matriz de menor tamaño. No tengo errores al declarar la matriz con:
List<int> array = new List<int>();Sin embargo, la ejecución del código genera un error en la matriz . Cuando declaro como:
var array = new ArrayList();¿Hay alguna forma en que pueda usar array. Where in array list? A continuación se muestra mi código:
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 es un tipo de colección no genérico, por lo que es bueno almacenar elementos en una matriz donde no se consideran los tipos de elementos. Entonces, por esta razón, no puede usar los métodos Linq que se usan para colecciones genéricas como Where. Mi recomendación es usar una Lista y convertirla en Array con el método Linq provisto. De esta manera es muy rápido.
Si realmente quiere usar un ArrayList (¿en serio? ¿Por qué?), puede usar OfType<int>() para cambiar IEnumerable a IEnumerable<int> .
var devidedArray = array.OfType<int>().Where((e, i) => i >= 5 && i < 10).ToArray(); Alternativamente, podría usar Cast<int>() :
var devidedArray = array.Cast<int>().Where((e, i) => i >= 5 && i < 10).ToArray(); La diferencia entre los dos es que OfType() ignorará silenciosamente los objetos que no se pueden convertir a int , mientras que Cast() fallará con una InvalidCastException .
https://docs.microsoft.com/en-us/dotnet/api/system.collections.arraylist?view=net-5.0
mira microsoft doc.
No recomendamos que utilice la clase ArrayList para nuevos desarrollos. En su lugar, le recomendamos que utilice la clase List genérica. ...
simplemente use List<T> para reemplazar ArrayList .