From MSDN
The number of dimensions and the length of each dimension are
established when the array instance is created. These values can't be
changed during the lifetime of the instance.
(Emphasis mine).
Arrays, by design, have a fixed size in C#, so a new array should be allocated:
Alpha = Alpha.Where(a => a.Power >= 0).ToArray();
Without Linq:
TheType[] alpha2 = new TheType[Alpha.Length];
int j=0;
for (int i=0; i < Alpha.Length; i++)
if(Alpha[i].Power >= 0)
{
alphaTmp[j++] = Alpha[i];
}
Array.Resize(ref alphaTmp, j);
Alpha = alphaTmp;
List<T>instead?