【发布时间】:2012-09-24 06:36:33
【问题描述】:
我正在尝试过滤掉某种类型的实体。我正在使用实体框架,我有一个父实体,以及从父实体继承的各种子实体。我正在尝试过滤掉其中一个孩子。
例如,我有以下结构:
- 地址:实体
- 邮政编码:地址
- 街道:地址
一个用户实体有一个地址的引用。如何获取与 PostCode 类型的地址关联的用户列表?
即我试过了:
var query = from User p in context.Users
where p.Address.GetType() == typeof(PostCode)
select p;
但我明白了:
LINQ to Entities 无法识别方法“System.Type GetType()” 方法,并且该方法不能翻译成商店表达式。
我见过一些解决方案,首先是获取用户列表,然后选择特定类型的用户列表。该方案的问题是查询首先获取所有用户;我希望我的查询包含过滤器,因为我有很多用户。
谢谢!
【问题讨论】:
-
等等。用户只有一个地址?所以它只能有 PostCode 或 Street?是不是错了?
-
好吧,为了简单起见,我编造了这个例子。可能不是最好的例子,但是是的,它只能有 PostCode 或 Street。
-
尝试使用
p.Address is PostalCode -
完成了这项工作!将其添加为答案 ;)
-
另外注意,一旦你获得了以邮政编码为地址的用户列表,并且你选择了其中一个用户,你可以将其地址转换为邮政编码吗?或者有没有更好的方法来获取 PostCode 对象?
标签: c# entity-framework asp.net-mvc-3 linq-to-entities gettype