2013-03-13 4 views
1

У меня возникают некоторые проблемы с обертками MVC для пользовательского интерфейса Kendo. Кажется, что IEnumerable не поддерживает какие-либо агрегированные значения, отличные от count. Исключением, которое я получаю, является: Нет универсального метода «Сумма» типа «System.Linq.Enumerable» совместим с аргументами и аргументами поставляемого типа. Аргументы типа не должны предоставляться, если метод не является общим.Нет общего метода «Сумма» по типу «System.Linq.Enumerable» совместима

Я не уверен, как обойти эти проблемы, и я уверен, что это недостаток с кендо.

Обратите внимание, что функция агрегата, используемая ниже, не является 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() 
) 
+2

'.Count(). Sum()' - '.Aggregates (...)' - эти значения недействительны. –

+0

Я предполагаю, что это вызвано вашим 'IEnumerable '. Почему вы используете 'IEnumerable ' вообще? Также я не знаю, поддерживают ли обертки KendoUI ... Поэтому попробуйте создать класс Product с продуктами ProID, ProductName, UnitPrice, чтобы узнать, работает ли он. – nemesv

+1

@TimothyShields '.Count(). Sum()' не методы Linq, а API конфигурации сетки пользовательского интерфейса Kendo. См. [Документация.] (Http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/configuration) – nemesv

ответ

1

Это теперь известная проблема с Кендо UI и будет исправлена ​​командой Кендо UI

-1

Сумма без аргументов работает только на IEnumerables из встроенных типов десятичного, двойной, Int и т.д.

Для вызова функции с универсальным типом, вы должны предоставить функцию преобразования.

I.e.

enumerable.Sum(e => e.Value) 

где e.Value - это то, что вы хотите суммировать.

Также см http://msdn.microsoft.com/en-us/library/system.linq.enumerable.sum.aspx

+0

Это функция Kendos Sum(), а не LINQ –

+0

@MitchellSkurnik это сообщение об ошибке «System.Linq.Enumerable». Компилятор сообщает вам, откуда исходит ошибка, и вы отказываетесь слушать любого, кто говорит вам об этом. Ваша библиотека может использовать эти методы под капотом без вашего ведома. В любом случае, .Count(). Sum() не имеет никакого смысла. –

+0

Это из пользовательского интерфейса Kendo. .Count(). Sum() добавить агрегат, который возвращается как JSON. –

 Смежные вопросы

  • Нет связанных вопросов^_^