我有员工工资表,其中包含:
public partial class S_EmployeeSalary
{
public int SalaryId { get; set; }
public int TypeId { get; set; }
public int UserId { get; set; }
public double Salary { get; set; }
public Nullable<double> ExtraSalary { get; set; }
public Nullable<double> Insurance { get; set; }
public Nullable<double> Sanctions { get; set; }
public System.DateTime SalaryDate { get; set; }
public virtual C_UserItems C_UserItems { get; set; }
}
我有一个按钮,当用户单击它时,它会自动创建上个月记录的副本,以更新创建的新月份的记录:
public ActionResult CreateNewRows(int typeId)
{
IQueryable<S_EmployeeSalary> moduleItems = db.S_EmployeeSalary
.Include(x => x.C_UserItems)
.Where(x => x.TypeId == typeId && DbFunctions.DiffDays(x.SalaryDate, DateTime.Now) > 30 && DbFunctions.DiffDays(x.SalaryDate, DateTime.Now) < 30);
foreach (var item in moduleItems)
{
S_EmployeeSalary entity = new S_EmployeeSalary
{
TypeId = typeId,
UserId = item.UserId,
Salary = item.Salary,
ExtraSalary = item.ExtraSalary,
Insurance = item.Insurance,
Sanctions = item.Sanctions,
SalaryDate = DateTime.Now
};
db.S_EmployeeSalary.Add(entity);
}
db.SaveChanges();
}
我的问题是我如何只指定上个月的记录来选择它,我尝试了 DbFunctions.DiffDays 但效果不佳,有没有人可以帮助我获得新想法?
记下其员工的工资,所以我需要上个月而不是最近30天
取决于您想要上个月还是过去 30 天(问题不清楚)
这是上个月的情况:
var startOfTthisMonth = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
var firstDay = startOfTthisMonth.AddMonths(-1);
var lastDay = startOfTthisMonth.AddDays(-1);
IQueryable<S_EmployeeSalary> moduleItems = db.S_EmployeeSalary
.Include(x => x.C_UserItems)
.Where(x => x.TypeId == typeId &&
x.SalaryDate >= firstDay &&
x.SalaryDate <= lastDay);
这是过去 30 天的数据:
var firstDay = DateTime.Today.AddDays(-30);
IQueryable<S_EmployeeSalary> moduleItems = db.S_EmployeeSalary
.Include(x => x.C_UserItems)
.Where(x => x.TypeId == typeId &&
x.SalaryDate >= firstDay);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)