【发布时间】:2020-01-26 11:32:05
【问题描述】:
我有基础模型类
public class BaseModel
{
[Not Mapped]
public string ExternalId;
}
基础模型类被两个子类继承
public class ChildA : BaseModel
{
public string ExternalId;
}
public class ChildB : BaseModel
{
public string Name;
}
所有子类都继承自 BaseModel。我已经在一些子类中声明了 ExternalId,所以我可以在我的抽象类中使用 linq。由于这些模型首先在 EF 模型中使用,这就是为什么在 BaseModel 中它具有 NotMapped 属性,因此 EF 不会生成此列。
这是抽象类
public abstract class Test<T> : ITest<T> where T : BaseModel, new()
{
protected virtual IEnumerable<T> TestMethod(IEnumerable<T> listModels)
{
var items = listModels.Where<T>(i => i.ExternalId != "ABC").ToList();
}
}
如何根据 ChildA 的 ExternalId 进行过滤
【问题讨论】:
-
为什么有必要在
ChildA中声明ExternalId吗?它隐藏了基本属性并且 - 好吧 - 会导致您的问题。 -
@RenéVogt 我只需要在 ChildA 中,并且我刚刚在 BaseModel 中声明,所以我可以在我的抽象方法中使用此属性用于 linq。