我在这一行收到编译错误:
GridView1.Columns[9].FooterText
= (from row in dt.AsEnumerable()
select row.Field<Int16>("quantity"))
.Skip(GridView1.PageIndex * GridView1.PageSize)
.Take(GridView1.PageSize).Sum()
.ToString();
在我的数据库表中,Quantity声明为Smallint
当我构建我的解决方案时,它抛出这两个异常
Error 40 Instance argument: cannot convert from
'System.Collections.Generic.IEnumerable<short>' to
'System.Collections.Generic.IEnumerable<int>'
Error 41 `'System.Collections.Generic.IEnumerable<short>'` does not
contain a definition for 'Sum' and the best extension method overload
'System.Linq.Enumerable.Sum(System.Collections.Generic.IEnumerable<int>)'
has some invalid arguments
我如何解决这个问题
答案 0 :(得分:4)
Sum()不包含接受short的重载(参见documentation)。
你总是可以转换为int,然后对转换的集合求和。
GridView1.Columns[9].FooterText
= (from row in dt.AsEnumerable()
select row.Field<Int16>("quantity"))
.Skip(GridView1.PageIndex * GridView1.PageSize)
.Take(GridView1.PageSize).Select(x => (int)x).Sum()
.ToString();