1

我在使用 MVC Wrappers for Kendo UI 时遇到了一些问题。似乎 IEnumerable 不支持计数以外的任何聚合值。我得到的例外是:类型“System.Linq.Enumerable”上没有通用方法“Sum”与提供的类型参数和参数兼容。如果方法是非泛型的,则不应提供类型参数。

我不确定如何解决这个问题,也不确定这是否是 Kendo 的缺陷。

请注意,下面使用的聚合函数不是 LINQ,而是 Kendo UI 的包装器作为函数提供的。有关详细信息,请参阅Kendo UI 文档

数据源:

  • 北风

控制器:

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()
)
4

3 回答 3

1

这现在是 Kendo UI 的一个已知问题,将由 Kendo UI 团队修复

于 2013-10-18T05:22:25.257 回答
0

@MitchellSkurnik在这里收到了答复。

于 2014-02-13T22:35:43.040 回答
-1

不带参数的 Sum 仅适用于内置类型 decimal、double、int 等的 IEnumerables。

要使用泛型类型调用它,您必须提供一个转换函数。

IE

enumerable.Sum(e => e.Value)

其中 e.Value 是您想要求和的值。

另请参阅http://msdn.microsoft.com/en-us/library/system.linq.enumerable.sum.aspx

于 2013-03-13T22:15:44.323 回答