Наследование и Linq-to-Entities - PullRequest
1 голос
/ 07 марта 2012

У меня есть следующие модели:

public class Person 
{
    long Id;
    string name;
}

public class Student : Person
{
    string studentId;
}

public class Bus
{
    long Id;

    public ICollection<Person> riders {set; get;}
}

public class SchoolBus : Bus
{
    long schoolBusNumber;
}

У меня также есть следующий код:

SchoolBus schoolBus = new SchoolBus();

schoolBus.riders = new List<Person>
{
    new Student { name = "Jim" },
    new Student { name = "Jane }
}


var query = from rider in SchoolBus.riders
    select new 
    {
        (rider as Student).studentId;
    }

Ученики и персона настроены как отдельные таблицы, и я использую DbContext.

Я знаю, почему это не сработает, но какие возможные варианты решения для меня, чтобы это вернуло правильный студенческий идентификатор с помощью коллекции Person?

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Если ваш код именно такой, как вы показали, это будет работать:

SchoolBus schoolBus = new SchoolBus ();

schoolBus.riders = new List<Person>
{
    new Student { name = "Jim" },
    new Student { name = "Jane }
}
var query = from rider in SchoolBus.riders
select new 
{
    riderID = (rider as Student).studentId;
}

Но если ваш запрос выполняется на linq2entity, вы должны показатьваш точный код и ваша проблема.

0 голосов
/ 07 марта 2012

попробуйте это:

var studentIds = rider.OfType<Student>().Select(x => x.studentId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...