簡體   English   中英

Linq加入兩個相同類型的對象

[英]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在你的查詢中, rselect new可參考rjoin 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM