获取我想要做以下...的Linq:Polymophic实体在选择列表
FROM o IN orders
SELECT new OrderContainer { Contact = (PostalContact) o.Contact }
所以希望你可以看到订单的“联系”将是一个派生类型。不幸的是,它似乎没有做一个多态获取!无论如何实现这一目标?
干杯,伊恩。
获取我想要做以下...的Linq:Polymophic实体在选择列表
FROM o IN orders
SELECT new OrderContainer { Contact = (PostalContact) o.Contact }
所以希望你可以看到订单的“联系”将是一个派生类型。不幸的是,它似乎没有做一个多态获取!无论如何实现这一目标?
干杯,伊恩。
尝试使用进一步扩展方法.OfType()
from o in orders
select new OrderContainer { Contact = o.Contact.OfType<PostalContact>().FirstOrDefault() }
编辑:
一种方式来获得完整的对象数据,但我怀疑,这是很好的满足你的需求。
from c in contacts.OfType<PostalContact>()
where c.Orders.Any(o=>o.Contact.Id == c.id)
select new OrderContainer { Contact = c }
,另一方面,如果设置的基类(实体)来抽象,你可能会发现,实体将加载完整的对象。但是由于生成的查询,这不被推荐。如果您正在研究此问题,您可能需要查看(TPH)针对您的联系人的每个层次结构的表
我不认为这会起作用,因为o.Contact不是IE无法使用的。 – 2011-05-04 14:05:58
我同意,我错过了第一次尝试回答 – 2011-05-04 15:32:18
非常感谢您的努力。无论如何,我现在要使用连接进行低级查询。 – 2011-05-04 21:10:20
“PostalContact”映射实体是否继承自“Contact”? – 2011-05-03 18:53:43