使用linq从基类列表中获取相同类型的继承类项

本文关键字:同类型 继承 获取 linq 基类 列表 使用 | 更新日期: 2023-09-27 18:04:17

class Animal {   }
class Tiger : Animal {    }
class Lion : Animal {    }

在动物列表中增加一些动物(从母体Animal类衍生的狮子和老虎)

class Program
{
    static void Main(string[] args)
    {
        List<Animal> animals = new List<Animal>();
        animals.Add(new Tiger());
        animals.Add(new Tiger());
        animals.Add(new Tiger());
        animals.Add(new Lion());
        animals.Add(new Lion());
        animals.Add(new Lion());
        List<Tiger> tigers = new List<Tiger>();
        foreach (var item in animals){
            if(item is Tiger){
                var _tiger = item as Tiger;
                tigers.Add(_tiger);
            }
        }
    }
}

我将使用上面的foreach循环获得老虎列表,但是是否有任何实现可以使用Linq,

来获取老虎列表?

List<Tiger> tigers = animals.where(somePredicate) ??

使用linq从基类列表中获取相同类型的继承类项

List<Tiger> tigers = animals.OfType<Tiger>().ToList();

var老虎=动物。式中(a => a为Tiger);