我创建了以下代码,以更简化地显示我的问题。
我没有通过编译器运行这个版本,所以它可能有错别字。
我正在寻找是否有更简洁的方式(甚至更好的方式)来搜索包含继承类的列表。
public class Engine {
public String FuelType { get; set; }
}
----------------------------------------------------------------------------
public class Wheel {
public String TyreType { get; set; }
}
----------------------------------------------------------------------------
public abstract class Car {
public abstract String Model { get; }
}
public class Ford : Car {
public override String Model {
get { return "Mustang"; } // Hardcoded for brevity
}
Public Engine Engine { get; set; }
}
public class Porche : Car {
public override String Model {
get { return "911"; } // Hardcoded for brevity
}
Public Wheel Wheel { get; set; }
}
----------------------------------------------------------------------------
// CarCollection as follows:
// Ford("mustang") > Engine > FuelType > "Petrol"
// Ford("mustang") > Engine > FuelType > "Diesel"
// Porche("911") > Wheel > TyreType > "Dry"
List<Car> carCollection = GetCarcollection();
我想要的是对' Ford("Mustang") > Engine > FuelType > "Petrol" '的引用。(假设集合将只包含一个)
//-- Start --
List<Ford> fordCollection = carCollection.FindAll( cc => cc.Model == "Mustang" )
.Cast<Ford>().ToList();
我无法访问上面的fuelType,所以我在下面的单独语句中进行了访问。
// This 'ford' is the reference I require
Ford ford = fordCollection.Find( fc => fc.Engine.FuelType == "Petrol" );
//-- Finish --
尽管这是可行的,但可以将上述两个语句合并为一个。
类结构只是一个简单的例子,设计与我的真实代码并不完全相关。