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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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# 询问孩子的问题';带WHERE条件的s表_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 询问孩子的问题';带WHERE条件的s表

C# 询问孩子的问题';带WHERE条件的s表,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我在使用EntityFramework项目的MVC中遇到了一个问题。经过学习研究,我用同样的方法举例说明工作。 但是,输出不符合我的预期 public List<School> GetSchoolDetails(EnumProvider firstProvider, EnumProvider secondProvider, DateTime fromDate, DateTime toDate) { using (myDB db

我在使用EntityFramework项目的MVC中遇到了一个问题。经过学习研究,我用同样的方法举例说明工作。 但是,输出不符合我的预期

        public List<School> GetSchoolDetails(EnumProvider firstProvider, EnumProvider secondProvider,  DateTime fromDate, DateTime toDate)
        {
            using (myDB db = new myDB())
            {
                List<School> listSchool = new List<School>();

                listSchool = db.School
                    .Where(a => a.Date> fromDate
                    && a.Date < toDate
                    && a.Provider == firstProvider
                    || a.Provider == secondProvider
                    && a.Room.Any(b => b.Status == EnumStatus.ACCEPTED))
                    .ToList();

                return listSchool;
            }
        }
公共列表GetSchoolDetails(EnumProvider firstProvider、EnumProvider secondProvider、DateTime fromDate、DateTime toDate)
{
使用(myDB=new myDB())
{
List LISTSHOOL=新列表();
listSchool=db.School
.其中(a=>a.Date>fromDate
&&a.日期<今天
&&a.提供者==第一提供者
||a.提供者==第二提供者
&&a.Room.Any(b=>b.Status==EnumStatus.ACCEPTED))
.ToList();
返校;
}
}
关系

            modelBuilder.Entity<Room>()
                .HasMany(e => e.Student)
                .WithRequired(e => e.Room)
                .WillCascadeOnDelete(false);

            modelBuilder.Entity<School>()
                .HasMany(e => e.Room)
                .WithRequired(e => e.School)
                .HasForeignKey(e => e.SchoolID)
                .WillCascadeOnDelete(false);
modelBuilder.Entity()
.HasMany(e=>e.Student)
.带必填项(e=>e.Room)
.WillCascadeOnDelete(假);
modelBuilder.Entity()
.HasMany(e=>e.Room)
.需要(e=>e.School)
.HasForeignKey(e=>e.SchoolID)
.WillCascadeOnDelete(假);

输出不正确,因为我希望状态是从孩子的桌子(桌子室)接受的。但是列表的输出是包含所有内部状态的。我犯的错误在哪里?

问题是您正在根据子记录标准筛选父记录

输出的包含的子记录将不会被过滤,除非您为Room执行类似于带有where子句的Select out的操作,这有点麻烦

               List<School> listSchool = new List<School>();

                listSchool = db.School
                    .Where(a => a.Date> fromDate
                    && a.Date < toDate
                    && a.Provider == firstProvider
                    || a.Provider == secondProvider
                    && a.Room.Any(b => b.Status == EnumStatus.ACCEPTED))
                    .Select(a => new School
                    {
                       SchoolID = a.SchoolID,
                       SchoolName = a.SchoolName,
                       // ... other properties
                       Room = a.Room.Where(b => b.Status == EnumStatus.ACCEPTED)
                    }
                    .ToList();

                return listSchool;
List listSchool=new List();
listSchool=db.School
.其中(a=>a.Date>fromDate
&&a.日期<今天
&&a.提供者==第一提供者
||a.提供者==第二提供者
&&a.Room.Any(b=>b.Status==EnumStatus.ACCEPTED))
.选择(a=>新学校
{
SchoolID=a.SchoolID,
SchoolName=a.SchoolName,
//……其他财产
房间=a.Room.Where(b=>b.Status==EnumStatus.ACCEPTED)
}
.ToList();
返校;

问题在于您正在根据子记录标准筛选父记录

输出的包含的子记录将不会被过滤,除非您为Room执行类似于带有where子句的Select out的操作,这有点麻烦

               List<School> listSchool = new List<School>();

                listSchool = db.School
                    .Where(a => a.Date> fromDate
                    && a.Date < toDate
                    && a.Provider == firstProvider
                    || a.Provider == secondProvider
                    && a.Room.Any(b => b.Status == EnumStatus.ACCEPTED))
                    .Select(a => new School
                    {
                       SchoolID = a.SchoolID,
                       SchoolName = a.SchoolName,
                       // ... other properties
                       Room = a.Room.Where(b => b.Status == EnumStatus.ACCEPTED)
                    }
                    .ToList();

                return listSchool;
List listSchool=new List();
listSchool=db.School
.其中(a=>a.Date>fromDate
&&a.日期<今天
&&a.提供者==第一提供者
||a.提供者==第二提供者
&&a.Room.Any(b=>b.Status==EnumStatus.ACCEPTED))
.选择(a=>新学校
{
SchoolID=a.SchoolID,
SchoolName=a.SchoolName,
//……其他财产
房间=a.Room.Where(b=>b.Status==EnumStatus.ACCEPTED)
}
.ToList();
返校;