我正在尝试计算两列差异的总和:
var result = model.TableExample
.Where(condition here)
.Select(s => s.Column1 - s.Column2)
.Sum();
但它正在上升例外:
索引和长度必须引用字符串
中的位置
我无法理解这一点。在任何地方都没有字符串,列在模型和数据库中是整数。有什么不对吗?
我正在使用MySql提供程序。
答案 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);
请注意,如果有很多行,性能将受到影响,因为此代码会获取每一行而不是仅获取总和。