以下代码:
注意:
然而,异常证明它们实际上不是功能等价的。
此外,我看到了这个相关的问题/答案,但是
model.Items = dbQuery.Select(c => new Item {
Total = c.Items.Count((Func<Item, bool>)(t => t.Amount.HasValue))
}).ToArray();
抛出以下异常:
内部 .NET Framework 数据提供程序错误 1025。
但是去掉转换的确切代码有效:
model.Items = dbQuery.Select(c => new Item {
Total = c.Items.Count(t => t.Amount.HasValue)
}).ToArray();
注意:
dbQuery
只是一个 EF ObjectQuery
。
Count()
方法的期望类型为 Func<Item, bool>
,并且 ReSharper 验证它们是相同的类型,这通过它将强制转换变灰来表示,暗示不需要它们也可以达到相同功能。然而,异常证明它们实际上不是功能等价的。
此外,我看到了这个相关的问题/答案,但是
Count()
(在这种情况下)不会接受 Expression<Func<Item, bool>>
,所以对我没有用。
Espression<Func<Item,bool>>
吗? - Alexander GalkinFunc<Item, bool>
中并不起作用。但如果我能让上面的代码工作,那么我就可以解决我更复杂的实际问题。 - Jerad Rose