C# 实体框架选择上月记录
我的员工工资表包含:C# 实体框架选择上月记录,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我的员工工资表包含: 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<dou
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; }
}
公共部分类S_员工工资
{
public int SalaryId{get;set;}
公共int类型ID{get;set;}
public int UserId{get;set;}
公共双薪{get;set;}
公共可为空的外部薪资{get;set;}
公共可撤销保险{get;set;}
公共可撤销制裁{get;set;}
public System.DateTime SalaryDate{get;set;}
公共虚拟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();
}
public ActionResult CreateNewRows(int-typeId)
{
IQueryable moduleItems=db.S_员工工资
.Include(x=>x.C_用户项)
其中(x=>x.TypeId==TypeId&&DbFunctions.DiffDays(x.SalaryDate,DateTime.Now)>30&&DbFunctions.DiffDays(x.SalaryDate,DateTime.Now)<30);
foreach(moduleItems中的var项)
{
S_EmployeeSalary实体=新S_EmployeeSalary
{
TypeId=TypeId,
UserId=item.UserId,
工资=项目。工资,
ExtraSalary=item.ExtraSalary,
保险=项目。保险,
制裁=项目.制裁,
SalaryDate=DateTime.Now
};
db.S_EmployeeSalary.Add(实体);
}
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);
var startoftthissmonth=新的日期时间(DateTime.Today.Year,DateTime.Today.Month,1);
var firstDay=本月的开始日期。添加月份(-1);
var lastDay=本月的开始日期。添加日期(-1);
IQueryable moduleItems=db.S_员工工资
.Include(x=>x.C_用户项)
其中(x=>x.TypeId==TypeId&&
x、 SalaryDate>=第一天&&
x、 SalaryDate x.C_用户项目)
其中(x=>x.TypeId==TypeId&&
x、 工薪日>=第一天);
看起来此部件不会返回结果,因为它不能同时大于和小于30
DbFunctions.DiffDays(x.SalaryDate, DateTime.Now) > 30 && DbFunctions.DiffDays(x.SalaryDate, DateTime.Now) < 30)
DbFunctions.DiffDays(x.SalaryDate,DateTime.Now)>30&&DbFunctions.DiffDays(x.SalaryDate,DateTime.Now)<30)
上个月的记录或从今天开始前30天的记录?其员工工资,因此我需要上个月而不是最后30天谢谢,我会尝试,其员工工资,因此我需要上个月而不是最后30天
DbFunctions.DiffDays(x.SalaryDate, DateTime.Now) > 30 && DbFunctions.DiffDays(x.SalaryDate, DateTime.Now) < 30)