Linq Sum 语法
Linq Sum Syntax
我想我疯了。任何人都可以帮助解决此语法的问题吗?
我想对列进行简单求和。 SQL 将是;
Select sum(x1.On_Hand_Qty)
From Material_Location x1
Where x1.Material = '3171784-18'
我在 LINQ 中尝试过;
var results = (from x1 in Material_Locations
where x1.Material == "3171784-18"
select new {x1.On_Hand_Qty}).Sum();
但是出现了这个错误;
'System.Linq.IQueryable<AnonymousType#1>'
does not contain a
definition for 'Sum'
and the best extension method overload
'System.Linq.Queryable.Sum(System.Linq.IQueryable<int>)'
has some
invalid arguments
Instance argument: cannot convert from
'System.Linq.IQueryable<AnonymousType#1>'
to
'System.Linq.IQueryable<int>'
我试过了;
var results = from x1 in Material_Locations
where x1.Material == "3171784-18"
select new {x1.On_Hand_Qty.Sum()};
得到了这个错误;
Invalid anonymous type member declarator. Anonymous type members must
be declared with a member assignment, simple name or member access.
Material_Location.On_Hand_Qty
是 SQL 服务器中的双倍数。
我 运行 语法错误。一定有我缺少的演员表或类似的东西。如果你来长岛,我就用啤酒行贿。有什么想法吗?
不要投影匿名对象。只是:
var results = (from x1 in Material_Locations
where x1.Material == "3171784-18"
select x1.On_Hand_Qty).Sum();
当您投影匿名对象 (new {..}
) 然后执行 Sum
时,编译器无法对项目求和 - 因为项目不是数值而是对象。并且这些对象不会覆盖 +
运算符,也不能隐式转换为数值。
第二个版本,您尝试 x1.On_Hand_Qty.Sum()
将无法工作,因为正如您所说,On_Hand_Qty
是 double
而不是 IEnumerable<T>
Sum
扩展方法。
或者您可以使用:
var results = Material_Locations
.Where(q => q.Material == "3171784-18")
.Sum(q => q.On_Hand_Qty)
我想我疯了。任何人都可以帮助解决此语法的问题吗?
我想对列进行简单求和。 SQL 将是;
Select sum(x1.On_Hand_Qty)
From Material_Location x1
Where x1.Material = '3171784-18'
我在 LINQ 中尝试过;
var results = (from x1 in Material_Locations
where x1.Material == "3171784-18"
select new {x1.On_Hand_Qty}).Sum();
但是出现了这个错误;
'System.Linq.IQueryable<AnonymousType#1>'
does not contain a definition for'Sum'
and the best extension method overload'System.Linq.Queryable.Sum(System.Linq.IQueryable<int>)'
has some invalid argumentsInstance argument: cannot convert from
'System.Linq.IQueryable<AnonymousType#1>'
to'System.Linq.IQueryable<int>'
我试过了;
var results = from x1 in Material_Locations
where x1.Material == "3171784-18"
select new {x1.On_Hand_Qty.Sum()};
得到了这个错误;
Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
Material_Location.On_Hand_Qty
是 SQL 服务器中的双倍数。
我 运行 语法错误。一定有我缺少的演员表或类似的东西。如果你来长岛,我就用啤酒行贿。有什么想法吗?
不要投影匿名对象。只是:
var results = (from x1 in Material_Locations
where x1.Material == "3171784-18"
select x1.On_Hand_Qty).Sum();
当您投影匿名对象 (new {..}
) 然后执行 Sum
时,编译器无法对项目求和 - 因为项目不是数值而是对象。并且这些对象不会覆盖 +
运算符,也不能隐式转换为数值。
第二个版本,您尝试 x1.On_Hand_Qty.Sum()
将无法工作,因为正如您所说,On_Hand_Qty
是 double
而不是 IEnumerable<T>
Sum
扩展方法。
或者您可以使用:
var results = Material_Locations
.Where(q => q.Material == "3171784-18")
.Sum(q => q.On_Hand_Qty)