如何在实体框架中对列进行求和并绑定标签?
var result = (from t in db.aktivitaet
where t.idrapport == idrapport
group t by t.aktotal into d
select d).Sum();
lblsum.Text = Convert.ToString(result.Sum( res => res));
像这样的东西,但如果有可能我想用.toList()这样做:
var result = (from t in db.aktivitaet
where t.idrapport == idrapport
select new
{
t.aktotal
}).ToList();
double sum = 0;
foreach (var item in result)
{
sum += Convert.ToDouble(item.aktotal);
}
lblsum.Text = sum.ToString();
但是使用第二个代码块我得到错误:
Das Objekt des Typs \"System.TimeSpan\" kann nicht in Typ \"System.IConvertible\" umgewandelt werden.
答案 0 :(得分:1)
var result = (from t in db.aktivitaet
where t.idrapport == idrapport
select new
{
t.aktotal
}).ToList();
var sum = result.Aggregate(TimeSpan.Zero, (total, next) => total.Add(next));
lblsum.Text = sum.ToString();
这应该可以解决问题
答案 1 :(得分:0)
对于timepan对象,没有内置的Convert.ToDouble转换。
试试这个:
var result = (from t in db.aktivitaet
where t.idrapport == idrapport
select new
{
t.aktotal
}).ToList();
double sum = 0;
foreach (var item in result)
{
sum += item.aktotal.HasValue ? item.aktotal.TotalSeconds : 0;
}
lblsum.Text = sum.ToString();
请注意,唯一的区别是
sum += item.aktotal.HasValue ? item.aktotal.TotalSeconds : 0;
如果没有提供度量单位(在这种情况下为秒),它不知道使用什么作为时间跨度的表示 - 您可以使用TotalHours,TotalMilliseconds,TotalDay等 - 您只需指定时间单位您希望将时间长度表示为。