獲取我想要做以下...的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