1

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()
)
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 でのみ機能します。

ジェネリック型で呼び出すには、変換関数を提供する必要があります。

いえ

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 に答える