2011-10-06 102 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

相关问题