2010-10-06 5 views
2

Я пытаюсь вычислить сумму разности двух столбцов:Sum разность двух столбцов в Entity Framework

var result = model.TableExample 
        .Where(condition here) 
        .Select(s => s.Column1 - s.Column2) 
        .Sum(); 

но восходящих исключение:

индекс и длина должна обратитесь к месту в строке

Я не могу это понять. Строка отсутствует, столбцы являются целыми в модели и базе данных. Здесь что-то не так?

Я пользуюсь услугами MySql.

+2

Можете ли вы опубликовать полный след стека исключения? – dtb

+0

- результат одного или нескольких строк? – Mouhannad

ответ

4

Похож на ошибку в поставщике MySQL Linq ... Вероятно, ошибка связана с внутренними манипуляциями с строками в провайдере.

Вы могли бы попытаться обойти это путем извлечения строк и вычисления суммы в памяти, как это:

var result = model.TableExample 
       .Where(condition here) 
       .Select(s => s.Column1 - s.Column2) 
       .AsEnumerable() 
       .Sum(); 

Или это:

var result = model.TableExample 
       .Where(condition here) 
       .AsEnumerable() 
       .Sum(s => s.Column1 - s.Column2); 

Обратите внимание, что производительность будет страдать, если много строк, потому что этот код извлекает каждую строку вместо того, чтобы просто извлекать сумму.

+0

Можно ли это сделать в столбце шаблона GridView Eval? –