求和Entity Framework中两列的差异

时间:2010-10-06 22:31:15

标签: c# asp.net linq entity-framework

我正在尝试计算两列差异的总和:

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

但它正在上升例外:

  

索引和长度必须引用字符串

中的位置

我无法理解这一点。在任何地方都没有字符串,列在模型和数据库中是整数。有什么不对吗?

我正在使用MySql提供程序。

1 个答案:

答案 0 :(得分: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);

请注意,如果有很多行,性能将受到影响,因为此代码会获取每一行而不是仅获取总和。