2014-09-09 6 views
2

Entity Framework에서 열을 합계하고 레이블에 바인딩 할 수 있습니까?C# 엔티티 프레임 워크 합계 timespan

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)); 

이런 식으로 뭔가하지만 가능한 I 싶어 만약이 같은 .toList()와 함께 할이 : Das Objekt des Typs \"System.TimeSpan\" kann nicht in Typ \"System.IConvertible\" umgewandelt werden.

답변

0
:

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(); 

그러나 두 번째 코드 블록을 사용하여 나는 오류

timespan 개체에 대해 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; 

입니다 case 초) - TotalHours, TotalMilliseconds, TotalDay 등을 사용할 수 있습니다. 시간 범위를 표시 할 시간 단위를 지정하기 만하면됩니다.

+0

을해야한다 'TotalSeconds'나는에 구문 오류가 있었다 – twixwix

+0

죄송합니다 응답을 업데이트했습니다. 값이 null이면 합계 + =가 고려됩니다. – Kritner

+0

나는 TotalSeconds에 대한 정의가 없기 때문에 어쨌든 답안에 문제가있다. String 예제를 만들 때 더 쉬울 것이다 : from (00:01:00) + until (00:01:00) = String (2) – twixwix

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(); 

내가 TotalSeconds으로 이것을 시도에 대한 오류를 \t '선택 System.Nullable '어떤 정의가 제공하지 않는 경우이 트릭