2012-06-25 53 views
2

的選擇財產一直收到ArgumentNullException「值不能爲空參數名:內。」有以下LINQ:LINQ左加入 - 離開實體

var dataSource = (from v in vouchers 
        join payAdj in paymentAdjustments on v.VoId equals payAdj.VoId into pTemp 
        from p in pTemp.DefaultIfEmpty() 
        select new 
        { 
        VoId = v.VoId, 
        OpId = v.OpId, 
        PaValue = p.PaValue 
        }); 

兩個憑證,paymentAdjustments是實體名單。

我已閱讀了很多關於此的帖子,我嘗試的所有內容都一直給我提供相同(或類似)的錯誤。

  • 訪問PaValue即PaValue = P之前鑄造PaValue到可爲空的小數即PaValue =(十進制?)p.PaValue

  • 測試p表示空!= NULL? p.PaValue:(十進制)0

  • 使用的SingleOrDefault

    (應該只有一個),而不是DefaultIfEmpty

  • 在paymentAdjustments做嵌套查詢,而不是加入...成即PaValue =(從對 其中p.VoId == v.VoId 選擇p.PaValue).DefaultIfEmpty()

我使用C#2010 Express和.NET 4

任何OT她的建議將不勝感激。

感謝 馬林

+0

您的查詢看起來不錯。你能告訴我們更多關於「代金券」和「支付調整」嗎?他們只是集合?如果是這樣,你能提供類型定義嗎? – Enigmativity

+0

你們每個人都解決了這個問題嗎? –

回答

2

我知道這是舊的,但任何人尋找答案,要加入的兩個對象之一爲null。先做這件事。

如果(代金券!= NULL & & payAdjustments!= NULL) ...

0
var query = from case in dbEntity.Cases 
      join Comm in dbEntity.Comms on case.log_id equals comm.CaseId into collection 
      from subCase in collection.DefaultIfEmpty() 
      select new { Case=case,Status= (subCase==null?null:subcase.Status };