我需要查詢一個表并加入相關的表。不加入另一個表的單個查詢回傳預期結果。但是一旦我加入另一張桌子,我就會得到零結果。
下面的查詢回傳一些結果
var response = from o in context.Orders.Where(p => p.Start_Effective >= startDate && p.Start_Effective < endDate);
但是一旦我加入另一張桌子
var response = from o in context.Orders.Where(p => p.Start_Effective >= startDate && p.Start_Effective < endDate);
join v in context.Venue on o.Id equals v.Id
select new
{
Id = o.Id,
PointId = o.FromPointId,
VenueName = v.Name
};
我也嘗試了下面的查詢,但我仍然得到零結果
var response = from o in context.Orders.Where(p => p.Start_Effective >= startDate && p.Start_Effective < endDate)
from v in context.Venue
where v.OrderId == o.Id
select new
{
Id = o.Id,
PointId = o.FromPointId,
VenueName = v.Name
};
我無法弄清楚為什么我加入表后會回傳 0 結果
uj5u.com熱心網友回復:
如果Venue表中沒有記錄,使用OrderIdwhen inner join,則不回傳資料,您應該插入表OrderId中存在的記錄Order。
另一種選擇是使用left join. 通過左連接,如果沒有OrderId在Venue表,回傳結果
uj5u.com熱心網友回復:
嘗試使用左連接,并添加到串列
var response = (from o in contextOrders
join v in context.Venue on o.Id equals v.Id into vj
from v in vj.DefaultIfEmpty()
where ( o.Start_Effective >= startDate && o.Start_Effective < endDate)
select new
{
Id = o.Id,
PointId = o.FromPointId,
VenueName = v.Name
}).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318214.html
