2013-06-17 1 views
1

Использование LINQ to SQL и Object Relational Designing; Предположим, у нас есть class Animal с двумя унаследованными классами, которые называются Cat и Dog. Мы можем загрузить «Animal» класс и его свойства легко:LINQ to SQL, выберите из унаследованного класса

var animals = from a in dataContext.Animals 
       select a; 

Однако при попытке загрузить Cat или Dog, DataContext имеет атрибут ни Cats, ни Dogs. Как можно загрузить Cat или Dog из таблицы Animal со своими дополнительными предложениями?

Заранее спасибо.

+0

_ "Как можно загрузить кошку или собаку из таблицы животных с их собственными дополнительные свойства? »_ - вы не можете. Будет ли «Животное животное = новое животное(); Cat cat = (Cat) животное, 'компилировать? Объясните ситуацию немного больше (какие классы вы определили, какой код у вас сейчас есть, что вы пробовали). – CodeCaster

ответ

2

Используйте OfType<T>:

var dogs = from a in dataContext.Animals.OfType<Dog>() 
       select a; 

и для кошек:

var cats = from a in dataContext.Animals.OfType<Cat>() 
       select a; 

Как показано here

... и полный пример here

+0

Спасибо, именно то, что я хотел. –

+0

@SabaJamalian вы приветствуете :) –

2

проекта в новую кошку или новой собаки:

Cat:

var animals = from a in dataContext.Animals 
       select new Cat { 
        CatProperty = a.Property 
       }; 

Собака:

var animals = from a in dataContext.Animals 
       select new Dog { 
        DogProperty = a.Property 
       }; 
+0

не работал для меня. «a» не имеет доступа к атрибуту «Свойство». , , –