繁体   English   中英

类型'System.Linq.Enumerable'上的通用方法'Sum'不兼容

[英]No generic method 'Sum' on type 'System.Linq.Enumerable' is compatible

我在Kendo UI的MVC包装器中遇到一些问题。 似乎IEnumerable不支持count以外的任何聚合值。 我得到的例外是:类型'System.Linq.Enumerable'上没有通用方法'Sum'与提供的类型实参和实参兼容。 如果方法是非泛型的,则不应该提供任何类型参数。

我不确定如何解决这个问题,也不确定剑道是否存在缺陷。

请注意,下面使用的聚合函数不是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()
)

现在,这是Kendo UI的一个已知问题,将由Kendo UI团队解决。

@MitchellSkurnik 在这里收到了请柬。

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

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

enumerable.Sum(e => e.Value)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM