0
TL;博士版本:我需要這個SQL語句使用LINQ合作,EF無法弄清楚如何做到在LINQ多加入EF英孚
這是在SQL查詢:
select
stu.SyStudentId,
rtrim(stu.StuNum) as StudentNumber,
stu.SSN,
stu.FirstName,
stu.LastName,
Email,
OtherEmail,
stu.StartDate,
case
when (systa.category = 'E') then 'Enrolled'
when (systa.category = 'A') then 'Active'
else 'This should never happen'
end as StatusCategory,
rtrim(schsta.Code) as SchoolStatusCode,
pic.StudentPicture,
case when (stu.DateLstMod > isnull(pic.DateLstMod,'1900-1-1'))
then stu.DateLstMod
else pic.DateLstMod
end as DateLstMod
from
SyStudent stu
inner join syschoolstatus schsta on schsta.syschoolstatusid = stu.syschoolstatusid
inner join SyStatus systa on systa.SyStatusId = schsta.SyStatusId
left outer join cmstudentpicture pic on pic.systudentid = stu.systudentid
where stu.sycampusid = 6
and systa.category in ('E','A')
醜陋查詢,從舊系統繼承..
我試圖得到一些我們必須利用實體框架的服務。我試圖讓這個查詢使用該方法基於語法的工作。我第一次拿到我要加盟的所有對象的列表:
var students = ctx.syStudents.ToList(); //root
var statusCode = ctx.SySchoolStatus.ToList(); //inner
var status = ctx.syStatus.ToList(); //inner
var picture = ctx.CmStudentPictures.ToList(); //left outer
「CTX」是我的DbContext類。
查詢我到目前爲止是這樣的:
var query = students
.GroupJoin(statusCode,
student => student.SySchoolStatusID,
statuscode => statuscode.SySchoolStatusID,
(student, studentStatusCode) => new
{
StudentName = student.FirstName
});
顯然沒有完全實現,但我試圖得到一個想法,如果這是執行最好的辦法,因爲我有幾個內部連接,然後左外連接爲好,或者是有沒有得到這個工作更好,更易讀的方式?
這看起來很不錯!非常可讀。不能測試它,直到我得到了應用程序多了一些部件在一起,但感謝您的快速答覆。 – ledgeJumper 2013-03-25 15:46:39