2010-11-03 22 views
12

Angenommen, ich habe eine übergeordnete Entität "Firm" und eine Handvoll untergeordneter Entitäten, die von Firm erben. Angenommen, die Kinder heißen "RedFirm", "GreenFirm" und "BlueFirm". Wie kann ich die Firm-Sammlung abfragen, wenn ich nur RedFirm- und GreenFirm-Instanzen abrufen möchte?Entity Framework OfType()

Ich weiß, ich kann context.Firms.OfType(RedFirm) tun, aber das gibt nur die RedFirm-Instanzen zurück. Gibt es überhaupt eine Sammlung von Typen in OfType oder etwas ähnliches? Ich nehme an, dass dies durch eine Gewerkschaft möglich ist, aber ich würde denken, dass das weniger effizient wäre.

Antwort

20
context.Firms.Where(x => x is RedFirm || x is GreenFirm); 
7

Sie könnten so etwas wie:

context.Firms.Where(item => (!(item is BlueFirm))); 
1
context.Firm.OfType<RedFirm>()./Rest of the query/ 

Dies ist der Weg, um Benutzer OfType