Entity framework 如何先用Linq在EF代码中输入?

Entity framework 如何先用Linq在EF代码中输入?,entity-framework,linq-to-entities,ef-code-first,Entity Framework,Linq To Entities,Ef Code First,当使用传统实体框架并使用ESQL进行查询时,可以使用OFTYPE with ONLY来仅返回基类型 见: 在Entity Framework Code First中,我设置了继承,其中B是a的子类型。执行MyContext.set.OfType仍然返回类型B的元素。理想情况下,我希望调用MyContext.set.OfOnlyType,它的转换方式与仅使用ESQL的OfType时相同 我还发现我可以在where语句中使用is运算符,但同样,这将返回a和B实体 如何编写只过滤到a类型元素的linq

当使用传统实体框架并使用ESQL进行查询时,可以使用OFTYPE with ONLY来仅返回基类型

见:

在Entity Framework Code First中,我设置了继承,其中B是a的子类型。执行MyContext.set.OfType仍然返回类型B的元素。理想情况下,我希望调用MyContext.set.OfOnlyType,它的转换方式与仅使用ESQL的OfType时相同

我还发现我可以在where语句中使用is运算符,但同样,这将返回a和B实体


如何编写只过滤到a类型元素的linq表达式?

除非从结果集中排除派生实例,否则无法仅获取直接等效于仅在linq to实体中的实例。例如:

var list = MyContext.Set<A>().Where(a => !(a is B)).ToList();

除非以某种方式将派生实例从结果集中排除,否则无法仅获取直接等效于Linq to实体的实例。例如:

var list = MyContext.Set<A>().Where(a => !(a is B)).ToList();

ESQL的OFTYPE有一个仅在问题中提到的可选关键字,它改变了行为。问题是如何将其转换为LINQ,而这在ESQL中是可能的。你的回答是对的,除了你的理解是错误的评论和不必要的解释。@hvd:谢谢。我修改了我的答案。假设有几种不同的类型。我必须把他们全部排除在外?我想知道ESQL中唯一的关键字在幕后做了什么而没有这个问题?是的,你必须这样做。ESQL是比LINQtoEntities更强大的查询语言,但由于LINQtoEntities的炒作,它大部分都被弃用。仅以与手动指定where条件类似的方式工作。查询不一样,但方法相似。芭芭拉·利斯科夫正在向她转。。。ESQL的OFTYPE有一个可选的关键字,这个关键字只在问题中提到过,它改变了行为。问题是如何将其转换为LINQ,而这在ESQL中是可能的。你的回答是对的,除了你的理解是错误的评论和不必要的解释。@hvd:谢谢。我修改了我的答案。假设有几种不同的类型。我必须把他们全部排除在外?我想知道ESQL中唯一的关键字在幕后做了什么而没有这个问题?是的,你必须这样做。ESQL是比LINQtoEntities更强大的查询语言,但由于LINQtoEntities的炒作,它大部分都被弃用。仅以与手动指定where条件类似的方式工作。查询不一样,但方法相似。芭芭拉·利斯科夫正在向她转。。。床