Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架选择上月记录_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

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)