2016-09-21 56 views
2

我需要從當前月份獲取數據。無法找到可行的解決方案。Linq選擇行當前月份中的日期

這是我的代碼,這給了我,我需要的數據,但我從整整一個月找回數據,而不是從當月我們英寸

我選擇了日期「限制」兩次row > DateTime.Today.Addmonths(-1)

任何想法?

var userQuery = 
from timeEntry in TimeEntries 
           //this displays a month back, not current month TODO: change to current month. 
where timeEntry.DateEntity > DateTime.Today.AddMonths(-1) 
select new { 
    UserName = timeEntry.User.FirstName + " " +timeEntry.User.LastName, 
    HoursEntered = timeEntry.HoursEntered,  
    User = timeEntry.User 
}; 

var localrows = userQuery.ToList(); 

var grouping = localrows.GroupBy(x => x.User); 

var userList = grouping.Select(q => new { 
    UserName = q.FirstOrDefault().UserName, 
    Hours = q.Sum(hr => hr.HoursEntered),     //AbsenceTypeID = holiday(1)       // still takes from a whole month, instead of current month. 
    Holiday = q.FirstOrDefault().User.Absences.Where(a => a.AbsenceTypeID == 1).Where(date => date.DateEntity > DateTime.Today.AddMonths(-1)).Count(), 
}); 

編輯:

Keyur帕特爾的回答工作,雖然不是一個底部。

所以我要感謝朱爾斯爲這一個:

DateTime.Today.AddDays((DateTime.Today.Day -1) * -1) 
+0

你想從(編輯 - > from)月的第一天獲取數據嗎? – Jules

+0

我想要的數據與本月相匹配,所以如果是21/9,我想要從1/9到21/9的數據。所以數據來自我們所在的月份。 – andrelange91

+1

使用此DateTime.Today.AddDays((DateTime.Today.Day -1)* -1) – Jules

回答

5

嘗試使用這樣的:

DateTime today = DateTime.Today; 
var userQuery = 
from timeEntry in TimeEntries 
where timeEntry.DateEntity.Month == today.Month && timeEntry.DateEntity.Year == today.Year 
select new { 
    UserName = timeEntry.User.FirstName + " " +timeEntry.User.LastName, 
    HoursEntered = timeEntry.HoursEntered,  
    User = timeEntry.User 
}; 

新增支票.Year,因爲它可以匹配來自其他年份的月份,如果你有任何。

編輯

至於假期部分:

var userList = grouping.Select(q => new { 
    UserName = q.FirstOrDefault().UserName, 
    Hours = q.Sum(hr => hr.HoursEntered), 
    Holiday = q.FirstOrDefault().User.Absences.Where(a => a.AbsenceTypeID == 1 && a.DateEntity.Month == today.Month && a.DateEntity.Year == today.Year).Count(), 
}); 
+0

這個工程,但不是當我檢查假期時.. – andrelange91

+1

是的,我錯過了第二部分,嘗試我的編輯版本,讓我知道如果沒有工作。 –

+0

通過結合你的方法和來自Jules的方法進行工作。你的第二部分對我不起作用,不斷向我拋出錯誤^^ – andrelange91

1

您可以使用DateTime類的MonthYear性能如下:

var userQuery = TimeEntries 
    .Where (te => te.DateEntity.Month == DateTime.Today.Month && te.DateEntity.Year == DateTime.Today.Year) 
    .Select(timeEntry => 
    new { 
     UserName = timeEntry.User.FirstName + " " + timeEntry.User.LastName, 
     HoursEntered = timeEntry.HoursEntered,  
     User = timeEntry.User 
    } 
); 
1

你可以簡單地只比較月份部分日期如下:

timeEntry.DateEntity.Month == DateTime.Now.Month 
相關問題