2012-03-06 9 views
1

私は次のモデルがあります:継承とLINQのツーエンティティ

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; 
    } 

学生と人が別々のテーブルとして設定し、私はされています

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; 
} 

私はまた、次のコードを持っていますDbContextを使用します。

私はこれがうまくいかない理由を知っていますが、Personコレクションを使用して正しいstudentIdを返すための解決策は何ですか?

+0

私はLazy-Loadingを出しました。選択にロードする必要があるプロパティをインクルードするためにInclude()を使用する必要がありました。 – khaihon

答えて

0

この試してください:あなたのコードは、あなたが示す正確に何であるならば、これは動作します

var studentIds = rider.OfType<Student>().Select(x => x.studentId); 
+0

OfTypeはLinq to Entitiesでサポートされています:http://msdn.microsoft.com/en-us/library/bb738551.aspx – avs099

+0

nice reference、thanks –

0

を:

スクールバススクールバス=新しいスクールバス();

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で実行される場合は、正確なコードと問題を表示する必要があります。