c# - Linq 选择当月日期​​所在的行

标签 c# linq datetime

我需要获取当月的数据。一直未能找到有效的解决方案。

这是我的代码,它为我提供了我需要的数据,但我得到的是整整一个月的数据,而不是我们所在的当前月份的数据。

我使用 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 patel 的答案有效,但不适用于底部的答案。

所以我要为此感谢 Jules:

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

最佳答案

尝试使用这个:

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

关于c# - Linq 选择当月日期​​所在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39609777/

相关文章:

c# - 如何检查一个对象的多个属性是否具有相同的条件?

Java SimpleDateFormat 问号而不是月份

c# - 自动高亮返回行

c# - 如何在消费者类型的应用程序中缓存 DataContext 实例?

c# - 用于获取每个不同名称的 5 条最新记录的 LINQ

c# - 如何在 C# 中使用 LINQ 比较 2 个 XML

linq - 如何使用 LINQ 选择特定的子节点?

php - 如果我删除其 var_dump,MSSQL 日期时间对象将不会回显正确的日期

sql - 在 SQL 中使用官方 IANA 时区数据库需要帮助

c# - wpf中的ViewModel层次结构