是否可以在linq中使用OfType?

时间:2012-10-09 17:30:31

标签: c# linq entity-framework

我有一个名为source的表,它有多个派生表,例如account等。我有一个第二个表,它有一个名为Source的表的导航属性。

我想要做的是根据Source的类型过滤ActionItemState的结果,然后根据该继承表的属性过滤。

以下是我正在尝试做的一个例子。当我尝试下面的代码时,我得到“.LINQ to Entities仅支持转换EDM原语或枚举类型”。有没有人知道使用OfType或类似的方法?

 query = from a in _actionItemRepository.GetTable()
         where a.ActionItemStates.Any(ais => ais.Source is AccountSource && ((AccountSource)ais.Source).AccountId == id)
         select a;

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以使用此代码

Source.OfType<AccountSource>()

您在Where运算符

之前申请
 OfType<AccountSource>().Where(....)

答案 1 :(得分:1)

尝试用其他方式:

var accountSources = db.Sources.OfType<AccountSource>();
var actionItemStates = accountSources.SelectMany(a => a.ActionItemStates);