如何统计List<IVehicle>列表中特定类型(如Car)对象的数量?
正确统计List中Car类型对象数量的方法
你之前的代码vehicles.Count(x => x == car)是在判断列表元素是否和某个特定car对象的引用完全一致,而非判断元素是否属于Car类型,这就是统计结果不正确的原因。
以下是几种正确的实现方式:
用
is关键字判断类型:int carCount = vehicles.Count(x => x is Car);这种方式会匹配所有
Car类型及其子类的实例,写法简洁直观。用
GetType()精确匹配类型:
如果需要严格统计仅属于Car类型(不包含子类)的对象,可使用:int carCount = vehicles.Count(x => x.GetType() == typeof(Car));此方法只会统计类型完全等于
Car的实例,不会包含继承自Car的子类对象。用
OfType<T>方法筛选统计:
LINQ的OfType<T>方法可直接筛选出指定类型的元素,再统计数量:int carCount = vehicles.OfType<Car>().Count();该方法逻辑和
is关键字一致,会包含Car的子类实例。
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

