Autor Beitrag
julia24
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mo 09.02.15 22:06 
ausblenden C#-Quelltext
1:
2:
3:
4:
var summe1 = from l in db.Lg7s
&& new int[]{0,40}.Contains(l.CREATE)
&& l.ANSWERING>0
select (l.TALKINGTIME + l.ONHOLDTIME + l.ACTIONTIME + l.UPTIME)).Sum(i => i);

Ich würde das gerne in diese Abfrage einbauen. Bei Summe1 habe ich den versuch gemacht. Leider funktioniert das so nicht.(also schon alleine die Syntax nicht) Kann mir jemand helfen?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var pilotgroup = (from l in db.Lg7
                  where c.IdClasse == "7"
                  select l)
                  .GroupBy(l => l.NUMBER)
                  .Select(group => new
                  {
                    T4Number = group.Count(lg => lg.TALKINGTIME == 0),

                    Summe1 = group.Select(new {l.TALKINGTIME + l.ONHOLDTIME + l.ACTIONTIME + l.UPTIME}).Sum(lg => new int[]{38,40}.Contains(lg.CAUSE) && lg.ANSWERING>0)
                  }


Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt
Stundenplan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 32

Win 7
Delphi 7 Pers., C# (VS 2010 Express)
BeitragVerfasst: Di 10.02.15 11:21 
Kleiner Tipp, C#-Codetags gehen mit [cs][/cs]. ;-)
Zitat:

ausblenden C#-Quelltext
1:
2:
3:
4:
var summe1 = from l in db.Lg7s 
&& new int[]{0,40}.Contains(l.REATE) 
&& l.ANSWERING>0 
select (l.TALKINGTIME + l.ONHOLDTIME + l.ACTIONTIME + l.UPTIME)).Sum(i => i);



Bei den &&s fehlt was, und zwar das where:
ausblenden C#-Quelltext
1:
from l in db.Lg7s where new int[]{...}.Contains(...) && l.ANSWERING > 0					

Außerdem macht das .Sum(i => i) wenig Sinn, wenn du in der select-Klammer schon Zeiten aufsummierst.

Bei group.Select(new {l.TALKINGTIME + l.ONHOLDTIME + l.ACTIONTIME + l.UPTIME}) muss, wie beim oberen Select, ein Lambda mit Argument übergeben werden, also z.B. .Select(group => ...). Allerdings macht ein new {} wenig Sinn, wenn das einzige Element des on the fly erstellten Objektes eine Summe ist. Wie du das dann aber mit .Sum weiterverarbeiten willst, kann ich leider nur erraten. Vllt. kannst uns mal nen Abriss geben, was du genau machen willst.
julia24 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 10.02.15 12:49 
Also eigentlich will ich folgendes Statment (welches einzeln auch schon funktioniert hat),
in ein Statement mit Lambda umschreiben.

ausblenden C#-Quelltext
1:
2:
3:
4:
var summe1 = from l in db.Lg7s
where new int[]{0,40}.Contains(l.REATE)
&& l.ANSWERING>0
select (l.TALKINGTIME + l.ONHOLDTIME + l.ACTIONTIME + l.UPTIME)).Sum(i => i);


Hier ist mein versuch:

ausblenden C#-Quelltext
1:
Summe1 =group.Where(lg => new int[]{38,40}.Contains(lg.CAUSE) && lg.ANSWERING>0).Select(lg => new {DurationOfCallProcessing = lg.TALKINGTIME + lg.EN_ ONHOLDTIME + lg.ACTIONTIME + lg.UPTIME }).Sum(),					


Leider zeigt er mir aber an, dass die Sum hier nicht zulässig ist.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Am ende soll es so aussehen. 
  var pilotgroup = (from l in db.Lg7
                              where c.IdClasse == "7"
                              select l)
                                .GroupBy(l => l.NUMBER)
                                .Select(group => new
                                { 

T4Number = group.Count(lg => lg.TALKINGTIME == 0),

Summe1 = group.Select(new {l.TALKINGTIME + l.ONHOLDTIME + l.ACTIONTIME + l.UPTIME}).Sum(lg => new int[]{38,40}.Contains(lg.CAUSE) && lg.ANSWERING>0)
}



Ich weiß nicht, wie ich diese Addition einbaue.

Normalerweise könnte ich ja schreiben


ausblenden C#-Quelltext
1:
2:
Summe1 = group.Sum(lg => new int[]{38,40}.Contains(lg.CAUSE) && lg.ANSWERING>0)
}


Was ist aber jetzte, wenn ich die Summe der 4 Spalten addiert haben will.
julia24 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 10.02.15 13:03 
Ich hab die Lösung denk ich gefunden:

ausblenden C#-Quelltext
1:
2:
3:
T4Number =  group
    .Where(lg => new int[]{38,40}.Contains(lg.CAUSE) && lg.ANSWERING>0)
    .Sum(lg => lg.EN_ TALKINGTIME + lg.EN_ ONHOLDTIME + lg.EN_ ACTIONTIME + lg.UPTIME);