首先抱歉,如果我的标题不清楚,但我确实很难用英语把它写成简单的句子:)。
假设我有一个管理人员和超级英雄的网站,我有 2 个类:
public class Person
{
[Key]
public int PersonId { get; set; }
[MaxLength(100)]
public string Name { get; set; }
}
public class SuperHero:Person
{
[MaxLength(100)]
public string SuperHeroName { get; set; }
public virtual ICollection<SuperPower> SuperPowers{ get; set; }
}
在我的数据库中,我有这个:
第 1 个人:ID = 1 名称 =“Alex Flimster” 鉴别器 =“人”
第 2 个人:ID = 2 Name="Bruce Wayne" discriminator="SuperHero" SuperHeroName="Batman"
我知道我是否这样做:
var test = from Context.Person select p;
我得到每个人,英雄与否。
如果我只想要英雄,我会这样做:
var test = from Context.Person.OfType<SuperHero>() select p;
我的问题是:我如何只得到那个人?
var test = from Context.Person.OfType<Person>() select p;
将返回与第一次测试相同的结果。
编辑 我想我的问题并不完全清楚。假设我有 200 个人,除此之外还有 10 个超级英雄。我需要一个查询,该查询将返回所有只是 person 而没有任何可能的继承类的 Person。(假设我有另一个类 'VideoGame Hero' 也继承自 person。我需要一个简单的查询,它只是 person 而不是其他类)
谢谢!