这里我建立了三个测试类 catfamily ,cat与tiger
cat 与tiger继承自catfamily,catfamily是抽象类,有一个方法Miao()。建立一个catfamily的List泛型 ,然后通过LINQ去查询cat 或是tiger
namespace LinqTest { class Cats:CatFamily { public override void Miao() { Console.WriteLine("喵~~"); } } }
namespace LinqTest { class Tigers:CatFamily { public override void Miao() { Console.WriteLine("嗷~~~~~~"); } } }
namespace LinqTest { class Cats:CatFamily { public override void Miao() { Console.WriteLine("喵~~"); } } }
上面是实现的三个测试类,下面是主运行程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LinqTest { class Program { static void Main(string[] args) { //实现CatFamily的LIST泛型 List<CatFamily> lstCats = new List<CatFamily>(); Cats _cat = new Cats(); Tigers _tiger = new Tigers(); lstCats.Add(_cat); lstCats.Add(_tiger); Console.WriteLine("LINQ Test"); //通过LINQ查询出相应的子类 var getLinqTiger = from lt in lstCats where lt.GetType() == typeof(Tigers) select lt; var getLinqCat = from lc in lstCats where lc.GetType() == typeof(Cats) select lc; ((Tigers)getLinqTiger.First()).Miao(); ((Cats)getLinqCat.First()).Miao(); } } }
我这里将两个方法都查出来了,如果是想都实现的话完全可以通过FOREACH去实现.因为是做测试所以我没有加入相关的判断代码。在使用FIRST()方法前应该加入对getLinqTiger中Count 的判断。