我正在寻找对一列进行简单的求和。SQL 将是:
Select sum(x1.On_Hand_Qty)
From Material_Location x1
Where x1.Material = '3171784-18'
Run Code Online (Sandbox Code Playgroud)
在 LINQ 中我尝试过:
var results = (from x1 in Material_Locations
where x1.Material == "3171784-18"
select new {x1.On_Hand_Qty}).Sum();
Run Code Online (Sandbox Code Playgroud)
但得到这个错误:
'System.Linq.IQueryable<AnonymousType#1>'不包含 的定义,'Sum'并且最佳扩展方法重载'System.Linq.Queryable.Sum(System.Linq.IQueryable<int>)'有一些无效参数实例参数:无法从 转换
'System.Linq.IQueryable<AnonymousType#1>'为'System.Linq.IQueryable<int>'
我试过这个:
var results = from x1 in Material_Locations
where x1.Material == "3171784-18"
select new {x1.On_Hand_Qty.Sum()};
Run Code Online (Sandbox Code Playgroud)
并得到这个错误:
无效的匿名类型成员声明符。匿名类型成员必须使用成员赋值、简单名称或成员访问来声明。
Material_Location.On_Hand_Qty是 SQL Server 中的双精度。
我的语法已经用完了。一定有我缺少的演员或类似的东西。有任何想法吗?
不要投影匿名对象。只是:
var results = (from x1 in Material_Locations
where x1.Material == "3171784-18"
select x1.On_Hand_Qty).Sum();
Run Code Online (Sandbox Code Playgroud)
当您投影匿名对象 ( new {..}) 然后执行时,Sum编译器无法对项目求和 - 因为项目不是数值而是对象。这些对象不会覆盖+运算符,也不能隐式转换为数值。
您尝试的第二个版本将x1.On_Hand_Qty.Sum()不起作用,因为正如您所说,On_Hand_Qty是 adouble而不是IEnumerable<T>具有Sum扩展方法的 an 。
| 归档时间: |
|
| 查看次数: |
1571 次 |
| 最近记录: |