[英]Linq join two objects of the same type
我怎樣才能讓它發揮作用? 我一直收到r在當前上下文中不存在的錯誤消息(我把**放在哪里)。
var query = (
from p in PrerequisitesList
join r in RequirementStatus
on p.ID equals r.ID
into temp
from r in temp.DefaultIfEmpty(new RequirementStatus(p.ID, p.Name, p.Description, **r.Fulfilled**))
select new
{
p.ID
,p.Name
,p.Description
,r.Fulfilled
});
兩種類型都完全相同,因此各個值都會被覆蓋。
方法DefaultIfEmpty
本質上提供左外連接。 這意味着如果連接在正確的序列中找不到匹配項,那么它就是您的后備。 如果正確的項目為空,我們無法真正訪問它,對吧?
你必須找出別的東西,因為你犯了一個邏輯錯誤。
也許您可以通過實際提供默認值來解決它?
像這樣的東西:
temp.DefaultIfEmpty(new RequirementStatus(p.ID, p.Name, p.Description, false))
此外,右側列表的名稱與以后使用的RequirementStatus
類型相同,這使您的示例無法編譯。 但這可能是一個錯字。
我可以看到你用2 r
在你的查詢中, r
在select new
可參考r
中join r
它是超出范圍。 您必須使用其他名稱。
var query = ( from p in PrerequisitesList
join r in RequirementStatus on p.ID equals r.ID into temp
from r2 in temp.DefaultIfEmpty(new RequirementStatus(p.ID, p.Name, p.Description, p.Fulfilled))
select new {
p.ID,
p.Name,
p.Description,
r2.Fulfilled
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.