I got an array of a specific object. Lets say the object Car. At some point in my code I need to remove all Car-objects from this array that do not fulfill the requirements I stated. This leaves null values in the array.
我得到了一个特定对象的数组。让我们说对象Car。在我的代码中的某些时候,我需要从这个数组中删除所有不符合我所述要求的Car-object。这会在数组中保留空值。
public class Car{
public string type { get; set; }
public Car(string ntype){
this.type = ntype;
}
}
Car[] cars = new Car[]{ new Car("Mercedes"), new Car("BMW"), new Car("Opel");
//This should function remove all cars from the array where type is BMW.
cars = removeAllBMWs(cars);
//Now Cars has become this.
Cars[0] -> Car.type = Mercedes
Cars[1] -> null
Cars[2] -> Car.type = Opel
//I want it to become this.
Cars[0] -> Car.type = Mercedes
Cars[1] -> Car.type = Opel
Of course my real code is far more complex than this, but the base idea is the same. My question that I have is: How can I remove the empty values from this array?
当然,我的真实代码远比这复杂,但基本思想是一样的。我的问题是:如何从这个数组中删除空值?
I found countless solutions for a string array, but none for an object array.
我找到了无数的字符串数组解决方案,但没有找到对象数组。
1 个解决方案
#1
18
The following will create a new array with all the null values excluded (which seems to be what you actually want?):
以下将创建一个新数组,其中排除了所有空值(这似乎是您真正想要的?):
Cars = Cars.Where(c => c != null).ToArray();
Better yet, define your RemoveAllBMWs
method to omit the BMWs in the first place instead of setting them to null:
更好的是,定义你的RemoveAllBMWs方法,首先省略BMW,而不是将它们设置为null:
internal static Car[] RemoveAllBMWs(IEnumerable<Car> cars)
{
return cars.Where(c => c != null && c.Type != "BMW").ToArray();
}
#1
18
The following will create a new array with all the null values excluded (which seems to be what you actually want?):
以下将创建一个新数组,其中排除了所有空值(这似乎是您真正想要的?):
Cars = Cars.Where(c => c != null).ToArray();
Better yet, define your RemoveAllBMWs
method to omit the BMWs in the first place instead of setting them to null:
更好的是,定义你的RemoveAllBMWs方法,首先省略BMW,而不是将它们设置为null:
internal static Car[] RemoveAllBMWs(IEnumerable<Car> cars)
{
return cars.Where(c => c != null && c.Type != "BMW").ToArray();
}