LINQ:如何从3个不同的表中选择3个不同的列值?

时间:2012-02-21 17:17:41

标签: sql linq entity-framework sql-to-linq-conversion

我有三个表CorevalueSubjectTypeQuestion

我想选择CoreValue.SnameSubjectType.CnameQuestion.QuestionText,我知道如何使用SQL而不是LINQ,我们将不胜感激。

在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:/

感谢Advance

最诚挚的问候!

1 个答案:

答案 0 :(得分: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的名称而言,您的联接似乎有点奇怪 - 就好像您确实有三个实体都使用完全相同的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
            };