我有兩個表格,一個用於MainCourse,一個用於SubCourse。 MainCourse不一定需要一個子課程,因此SubCourse表中沒有任何與MainCourse ID鏈接的空值...左空加入Linq,可空參考
我必須在linq中創建左連接...我可以創建一個正常的連接,但問題是,當我運行連接時,只有數據會顯示哪一個既有MainCourse又有SubCourse。我需要顯示MainCourse不具有SubCourse以及..
這是我做了什麼:
帶回了僅既有MainCourse和SubCourse
var query = (from mc in context.SkillAssessCourseMains
join sc in context.SkillAssessCourseSubs
on mc.ID equals sc.MainCourseRef
select new
{
sc.ID,
mc.CourseName,
sc.SubCourseName
}).DefaultIfEmpty().ToList();
試圖修改數據這將帶回所有數據給我一個錯誤:由於物化值爲null,所以強制轉換爲值類型'Int32'失敗。結果類型的泛型參數或查詢都必須使用可爲空的類型。 (下面的代碼)
var query = (from mc in context.SkillAssessCourseMains
from sc in context.SkillAssessCourseSubs.Where(sc => sc.MainCourseRef == mc.ID).DefaultIfEmpty()
select new
{
sc.ID,
mc.CourseName,
sc.SubCourseName
}).ToList();
我知道錯誤是作爲一個結果,有一個子模塊沒有聯繫..
我也試過這樣:
var query = (from mc in context.SkillAssessCourseMains
join sc in context.SkillAssessCourseSubs
on mc.ID equals sc.MainCourseRef into results
from r in results.DefaultIfEmpty()
select new
{
r.ID,
mc.CourseName,
r.SubCourseName
}).ToList();
這也給了我一個錯誤:由於物化值爲空,轉換爲值類型'Int32'失敗。結果類型的泛型參數或查詢都必須使用可爲空的類型。
的表被設計爲:
MainCourse: ID, CourseName
SubCourse: ID, SubCourseName, MainCourseRef
可有人請點我在正確的方向或者告訴我什麼,我做錯了什麼?任何幫助將不勝感激....
EDIT數據的
實施例:
MainCourse表:
ID MainCourseName
1 Health & Safety
2 Customer Care
SubCourse表:
ID SubCourseName MainCourseRef
1 Introduction 1
2 First Aid 1
3 SHE rep course 1
因此,我想回來的數據是:
MainCourseName SubCourseName
Healt & Safety Introduction
Healt & Safety First Aid
Healt & Safety SHE rep course
Customer Care NULL
的ID爲好,但也可以是無論是從SubCourse或MainCourse表....
MainCourseRef是一個整數值(以分貝(SubCourse表的外鍵)MainCourse表的ID) ....問題是,有些MainCourseRef在SubCourse表中爲null,因爲並非所有主要課程都有SubCourse ... – Kerieks 2014-08-27 10:53:49
然後試試這個'on mc.ID equals sc.MainCourseRef == null?0:sc.MainCourseRef' – 2014-08-27 11:02:29
或者你可以試試如何編輯回答 – 2014-08-27 11:07:21