继承和LINQ到实体
问题描述:
我有以下型号:继承和LINQ到实体
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集合返回正确的studentId?
答
试试这个:
var studentIds = rider.OfType<Student>().Select(x => x.studentId);
+0
OfType在Linq to Entities中受支持:http://msdn.microsoft.com/en-us/library/bb738551.aspx – avs099 2012-03-06 21:58:13
+0
很好的参考,谢谢 – 2012-03-06 23:51:00
答
如果你的代码是你显示什么,这将工作:
学童校车=新校车();
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上,你应该显示你的确切代码和你的问题。
结果懒惰加载让我。需要使用Include()来包含我需要加载的属性。 – khaihon 2012-03-08 22:57:23