在Entity Framework中对两列的差值进行求和

3

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

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

但是它抛出了异常:

索引和长度必须指向字符串内的位置

我不理解这个。在模型和数据库中,列都是整数,没有任何字符串。有什么问题吗?

我正在使用MySql提供程序。


2
你能发布异常的完整堆栈跟踪吗? - dtb
结果是单行还是多行? - Mouhannad
1个回答

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);

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接