2011-10-06 33 views
1

下面的代碼行不斷崩潰:「異常已被調用的目標拋出。//未處理的表達式類型:1001「Linq Aggregate產生錯誤:「異常已被調用的目標引發//未處理的表達式類型:1001」

任何人都可以通過查看它來解釋爲什麼?

myList.Aggregate((curmax, x) => (curmax == null || x.LastMonth > curmax.LastMonth ? x : curmax)); 

我做什麼,得到的是curmax是將返回的變量,X是在其上迭代的項目。但我無法解釋錯誤。

+0

您使用的是什麼提供程序?什麼是myList類型? –

+0

myList包含一個名爲「Period」的類的列表。 我正在使用Linq到Nhibernate。 – HerbalMart

+1

但是這不是*實際上*列表',據推測?我懷疑這只是NHibernate不支持的東西。 –

回答

1

我懷疑這只是一個不受NHibernate支持的操作。但是,如果你只是經過「與LastMonth最大價值的價值」是您可以使用:

var latestPeriod = myList.OrderByDescending(x => x.LastMonth) 
         .FirstOrDefault(); 

這將是相當簡單,更容易得到支持。

+0

感謝您的輸入。我也加了我自己的awser。 – HerbalMart

0

我通過從Nhiberate調用.Tolist()來解決它。從那裏使用微軟Linq的集合擴展方法(而不是Nhibernate版本),沒有更多的問題。

myList.ToList().Aggregate((curmax, x) => (curmax == null || x.LastMonth > curmax.LastMonth ? x : curmax)); 
+1

您是否知道這意味着您現在正在從數據庫中拉下myList中的所有內容?我提出的解決方案不起作用嗎? (除了其他任何東西,國際海事組織,它更可讀。) –

+0

感謝您的評論喬恩。當時我並沒有意識到這一點。 現在...更好地瞭解具體類與IEnumerables我。在我們的案例中,一切都不是那麼糟糕的表現。 – HerbalMart

相關問題