2013-04-08 70 views
0

我試圖創建一個LINQ查詢,這將產生相同的結果,因爲這SQL實例:LINQ GROUP BY /選擇 - 對象引用不設置到對象

SELECT Priority.PriorityKey, Count(Priority.PriorityKey) AS NewPresentingUnits 
FROM Priority INNER JOIN SupportPeriod ON Priority.PriorityCode = SupportPeriod.PriorityCode 
WHERE (((SupportPeriod.NewClient)=True) AND ((SupportPeriod.DateAssistanceRequested) Between #1/1/2013# And #2/1/2013#) AND ((SupportPeriod.DateFinished) Between #1/1/9999# And #12/31/9999#)) 
GROUP BY Priority.PriorityKey; 

我得到以下結果當我運行SQL查詢:

https://docs.google.com/file/d/0B6b_N7sDgjmvRlBtT1lZWURERVU/edit?usp=sharing

這是LINQ聲明:

SupportPeriodTableAdapter spTa = new SupportPeriodTableAdapter(); 
    SupportPeriodDataTable dataTables = spTa.GetData(); 
     var test = (from sp in dataTables 
        where (sp.NewClient == true) && 
         (sp.DateAssistanceRequested >= new DateTime(2013, 1, 1) && 
         sp.DateAssistanceRequested <= new DateTime(2013, 2, 1)) && 
         (sp.DateFinished > new DateTime(2013, 2, 1)) 
        group sp by sp.PriorityRow.PriorityKey into groupz 
        select new { Key = groupz.Key, sount = groupz.Count() }); 

當我嘗試調試var test時,我在結果視圖中將「對象引用未設置爲對象的實例」。

https://docs.google.com/file/d/0B6b_N7sDgjmvdGp0bjJCNkE3TTg/edit?usp=sharing

我是新來使用「GROUP BY」和「選擇新的」 LINQ的功能,因此我有一個很難搞清楚了這一點....

+0

'sp.PriorityRow'可能是罪魁禍首 – NSGaga 2013-04-08 01:15:24

+0

@NSGaga SupportPeriod表中的所有FK在Priority表中都有一個有效的PK ...你的意思是我應該使用多個查詢而不使用sp.PriorityRow? – zaza 2013-04-08 01:20:23

回答

0

我想有你的數據加載出了問題。

我會檢查是否在數據表中的所有行有PriorityRow

,如果有一些行沒有PriorityRow上,該集團通過與失敗。 在這種情況下,你可以改變你的LINQ to:

var test = (from sp in dataTables 
      where (sp.NewClient == true) && 
        (sp.DateAssistanceRequested >= new DateTime(2013, 1, 1) && 
        sp.DateAssistanceRequested <= new DateTime(2013, 2, 1)) && 
        (sp.DateFinished > new DateTime(2013, 2, 1)) 
      group sp by sp.PriorityRow != null 
           ? sp.PriorityRow.PriorityKey 
           : "not key" 
         into groupz 
      select new { Key = groupz.Key, sount = groupz.Count() }); 

使用: 組由sp.PriorityRow SP =空? sp.PriorityRow.PriorityKey:「not key」into groupz

相關問題