1

と の 3 つのテーブルCorevalueSubjectTypeありQuestionます。

を選択したいのですがCoreValue.Sname、それが SQL でどのように機能するかは知っていますが、LINQ では機能しません。SubjectType.CnameQuestion.QuestionText

SQL では次のようになります。

SELECT 
   CoreValue.Cname, 
   Question.Questiontext, 
   SubjectType.Sname 
FROM 
   Corevalue 
JOIN Question
   ON Corevalue.CID = question.QID 
JOIN SubjecType 
   ON Question.QID = SubjectType.SID;

私はこれが正しいと思いますが、LINQしたいです:/

事前に感謝

よろしくお願いします!

4

1 に答える 1

4

SQLでも結合を表現する必要があります。

var query = from core in db.Cores
            join question in db.Questions on core.CID equals question.QID
            join subject in db.Subjects on question.QID equals subject.SID
            select new {
                core.CoreName,
                question.QuestionText,
                subject.SubjectName
            };

もちろん、データベースリレーションをマップした場合は、結合を明示的に実行する必要はなく、代わりに単純なプロパティを優先する場合があります。これはすべて、LINQの使用方法によって異なります。

IDの名前に関しては、結合が少し奇妙に見えることに注意してください。これは、3つのエンティティがすべてまったく同じIDを使用しているように見えます。私はこのようなものをもっと期待します:

var query = from core in db.Cores
            join question in db.Questions on core.ID equals question.CoreID
            join subject in db.Subjects on core.ID equals subject.CoreID
            select new {
                core.CoreName,
                question.QuestionText,
                subject.SubjectName
            };
于 2012-02-21T17:29:00.920 に答える