Linq:在选择列表中获取多态实体



我想做以下事情…

FROM o IN orders
SELECT new OrderContainer { Contact = (PostalContact) o.Contact  }

所以希望你能看到订单的'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)每个层次表的联系人

相关内容

  • 没有找到相关文章

最新更新