2016-08-18 3 views
0

Im to SQL ein Problem mit i Vergangenheit erhalten kann nicht, hier mein Controller ist für die Berichterstattung -Get Woche LINQ für Google-Charts

var week = DateTime.Now.Date.AddDays(-7);     

    List<LeaveChartVM> data = new List<LeaveChartVM>(); 
    using (ApplicationDbContext db = new ApplicationDbContext()) 
    {   
     data = (from u in db.UserProfiles 
       select new LeaveChartVM 
       { 
       Users = (from up in db.UserProfiles 
         select up).Count(), 

       OnLeaveToday = (from tol in db.CalendarData 
           where (today >= tol.StartTime && today <= tol.EndTime) 
           select tol).Count(),          

       SickLeave = (from sl in db.CalendarData 
          where sl.LeaveType == "5" 
          select sl).Count(), 

       AnnualLeave = (from al in db.CalendarData 
           where al.LeaveType == "1" 
           select al).Count() 
      }).Distinct().ToList(); 
    } 

Könnte jemand mir helfen, Daten für diese Woche zurückkehren nur bitte? Ich habe es geschafft, die heutige Krankheit zurückzugeben und zu gehen, aber ich möchte ein Liniendiagramm erstellen, das Daten für die Woche zurückgibt.

dies als Info Hinzufügen war nicht so toll, here die Tabellenstrukturen für calendarDatas -

[Subject] 
    ,[Description] 
    ,[StartTime] 
    ,[EndTime] 
    ,[AllDay] 
    ,[Recurrence] 
    ,[RecurrenceRule] 
    ,[LeaveType] 
    ,[StartTimeZone] 
    ,[EndTimeZone] 
    ,[UserId] 
    ,[EventStatus] 
    ,[ApporovedId] 
    ,[ApprovedDate] 
    ,[Duration] 
    ,[EventAction] 
    ,[EventDate] 
    ,[uid] 
    ,[colourId] 
    ,[UserProfiles_Id] 

und dann auch für Userprofiles -

[Forenames] 
    ,[Surnames] 
    ,[Fullname] 
    ,[EmployementType] 
    ,[Displayname] 
    ,[TeamId] 
    ,[ShiftPatternId] 
    ,[DepartmentId] 
    ,[DateJoined] 
    ,[DivsionId] 
    ,[WindowsUser] 
    ,[DateCreated] 
    ,[DateOfAction] 
    ,[ActionId] 
    ,[Division_Id] 

Was ich auf Jahr beide sind es, Menschen zurückkehren bin zu wollen Beurlaubung und Krankheitsurlaub in den letzten 7 Arbeitstagen und auch am aktuellen Tag.

+0

Bitte senden Sie die * relevant * Code nur und die Struktur der CalendarData. Es ist unmöglich zu beantworten, wie eine bestimmte Woche Daten zu erhalten, wenn wir nicht einmal wissen, ob Sie * haben * eine Datetime-Spalte –

+0

Ich glaube nicht, dass es in gebaut wird. Sie eine if-Anweisung zu machen. wenn Sonday ... die 6 Tage nach erhalten ... wenn Montag ... erhalten am Tag vor und die 5 Tage nach ... ...... –

+0

@SimonR - Ihr Code ist verwirrend . Sie wählen für jeden Benutzer verschiedene Dinge aus, ohne sie an den jeweiligen Benutzer zu binden. + die Frage selbst über 1 Tag vs. eine Woche. Bitte sagen Sie, was ist Ihre gewünschte Ausgabe für Daten und wie sehen die verschiedenen Tabellen wie –

Antwort

1

Etwas wie das Folgende?

DateTime today = DateTime.Now.Date; 
DateTime oneWeekAgo = today.AddDays(-7); 

// usage 
OnLeaveThisWeek = 
    (from tol in db.CalendarData 
    where (tol.StartTime >= oneWeekAgo && tol.EndTime <= today) 
    select tol).Count() 

Stellen Sie sicher, Ihre today und oneWeekAgo Werte der Logik entsprechen, die Sie benötigen, das heißt, ob es heute inklusive oder nicht usw. ist

+0

Danke, das hat mir, was ich wollte. – SimonR