如果有人能够在使用LINQ时解释术语into
的含义,我将不胜感激。一般来说,我想了解如何制作INNER JOIN,LEFT OUTER JOIN等C#。使用LINQ进行左外连接 - 了解代码
我有主表Students
,它存储一些外部ID键,然后在运行查询时用它们的名称替换它们。从查找表中读取名称,例如Marks
,SoftwareVersions
,Departments
等。所有字段是必需的,但是MarkID
。我试图建立在LINQ查询是这样的:
SELECT * FROM dbo.Students
INNER JOIN dbo.Departments ON dbo.Students.DepartmentID=dbo.Departments.DepartmentID
INNER JOIN dbo.SoftwareVersions ON dbo.Students.SoftwareVersionID=dbo.SoftwareVersions.SoftwareVersionID
INNER JOIN dbo.Statuses ON dbo.Students.StatusID=dbo.Statuses.StatusID
LEFT JOIN dbo.Marks ON dbo.Students.MarkID=dbo.Marks.MarkID
WHERE dbo.Students.DepartmentID=17;
我总算得到下面的代码阅读大量的文章和观看一些影片之后的工作,但我不觉得我有一个完整的了解的代码。令我困惑的是第5行以into
结尾,然后在下一行以from m ...
开头。我很困惑什么into
做什么,以及from m ...
真的发生了什么。这是在LINQ代码:
var result = from st in dbContext.Students where st.DepartmentID == 17
join d in dbContext.Departments on st.DepartmentID equals d.DepartmentID
join sv in dbContext.SoftwareVersions on st.SoftwareVersionID equals sv.SoftwareVersionID
join stat in dbContext.Statuses on st.StatusID equals stat.StatusID
join m in dbContext.Marks on st.MarkID equals m.MarkID into marksGroup
from m in marksGroup.DefaultIfEmpty()
select new
{
student = st.StudentName,
department = p.DepartmentName,
software = sv.SoftwareVersionName,
status = st.StatusName,
marked = m != null ? m.MarkName : "-- Not marked --"
};
请参见:http://stackoverflow.com/a/3855926/468973 – Magnus 2014-11-21 10:26:18
请坚持每一个岗位的问题。这两个问题解决了与EF合作的完全不同的方面。对于第一个问题,看到这一点:http://stackoverflow.com/a/15599143/861716 – 2014-11-21 10:27:03
有关内部连接和左外一些信息加入我建议https://www.youtube.com/watch?v=Te2o5qakvZk HTTPS ://www.youtube.com/watch?v = 5K8jwrlKV8E – 2014-11-21 10:31:29