我在使用Kendo UI的MVC Wrappers时遇到了一些问题。似乎IEnumerable不支持除count之外的任何聚合值。我得到的例外是: 类型'System.Linq.Enumerable'上没有泛型方法'Sum'与提供的类型参数和参数兼容。如果方法是非泛型的,则不应提供类型参数。
我不知道如何解决这个问题,我也不确定这是否与剑道有关。
请注意,下面使用的聚合函数不是LINQ,而是Kendo UI的包装器作为函数提供的。有关详细信息,请参阅Kendo UI Documentation。
数据来源:
控制器:
public ActionResult Index() { return View(); }
public ActionResult Read([DataSourceRequest] DataSourceRequest request) { return GetView(request); }
private IEnumerable<dynamic> GetData() { var db = new NwEntities(); return db.Products; }
private JsonResult GetView(DataSourceRequest request) { return Json(GetData().ToDataSourceResult(request)); }
查看:
@model IEnumerable<dynamic>
@(
Html.Kendo().Grid(Model).Name("Grid")
.DataSource(ds =>
ds.Ajax()
.Model(m =>
{
m.Id("ProductID");
m.Field("ProductName", typeof(string));
m.Field("UnitPrice", typeof(decimal));
})
.Aggregates(aggregate => aggregate.Add(a => "UnitPrice").Count().Sum())
.Read(r => r.Action("Read", "Home"))
)
.Columns(columns =>
{
columns.Bound("ProductID");
columns.Bound("ProductName");
columns.Bound("UnitPrice").Format("{0:c}");
})
.Groupable()
)
答案 0 :(得分:1)
现在这是Kendo UI的一个已知问题,将由Kendo UI团队修复
答案 1 :(得分:0)
@MitchellSkurnik收到了答复here。
答案 2 :(得分:-1)
没有参数的求和仅适用于内置类型decimal,double,int等的IEnumerables。
要使用泛型类型调用它,必须提供转换函数。
即
enumerable.Sum(e => e.Value)
其中e.Value是你要求的总和。
另见http://msdn.microsoft.com/en-us/library/system.linq.enumerable.sum.aspx