2016-09-21 62 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 
相关问题