我有这个代码结构。
public interface IParentEquipment
{
// attributes
}
[Table("TB_EQPT")]
public abstract class Equipment : IParentEquipment
{
// attributes
}
[Table("TB_CAPACITOR")]
public class Capacitor : Equipment
{
[Column("NAME")]
public string Name { get; set; }
}
我正在基于以下条件进行查询:
public IList<IParentEquipment> FindAllEquipmentsBySubstationName(string name)
{
List<IParentEquipment> equipments = new List<IParentEquipment>();
// capacitor
IQueryable<IParentEquipment> query = (
from e in ((IAppContext)_ctx).Capacitor
where e.Name.Equals(name)
select e).Distinct().Cast<IParentEquipment>();
equipments.AddRange(query.ToList());
....
// more consultations of other equipment
}
但是我得到了错误:
无法将类型“ Models.Base.Equipments.Capacitor”转换为类型 'Models.Base.Equipments.Interface.IParentEquipment'。 LINQ到实体 仅支持强制转换EDM基本类型或枚举类型。
我的问题是:是否可以在此查询中为 IParentEquipment 投放 Capacitor ?怎么做?
答案 0 :(得分:0)
是否可以在此查询中为IParentEquipment投放电容器?
无需强制转换即可使此代码正常工作。
var query = (
from e in ((IAppContext)_ctx).Capacitor
where e.Name.Equals(name)
select e).Distinct();
equipments.AddRange(query);