C# 如何在linq条件下匹配列表值?

C# 如何在linq条件下匹配列表值?,c#,asp.net-mvc,entity-framework,linq,C#,Asp.net Mvc,Entity Framework,Linq,如何在linq条件下匹配列表值 我有一个ID列表,所以这些ID必须在条件上匹配,并从一个表中获取数据 public ActionResult StudentSelect( long? CompanyId, long? CompanyLocationId, long? ClassId, long? SectionId, long? AcademicId, long? ExamId) //) //long? SectionId) 下面是学生注册ID的

如何在linq条件下匹配列表值

我有一个ID列表,所以这些ID必须在条件上匹配,并从一个表中获取数据

public ActionResult StudentSelect(
    long? CompanyId,
    long? CompanyLocationId,
    long? ClassId,
    long? SectionId,
    long? AcademicId,
    long? ExamId) //) //long? SectionId)
下面是学生注册ID的列表

{
    var RegId = (
        from a in db.Student_Marks_Percentage
        where a.Delete_Flag == false &&
            a.Exam_Id == ExamId &&
            a.Academic_Year_Id == AcademicId &&
            a.Class_Id == ClassId
        select a.Registration_Id)
        .ToList();

    List<StudentList> Student = new List<StudentList>();

    if (AcademicId != null &&
        CompanyId != null &&
        CompanyLocationId != null &&
        ClassId == null &&
        SectionId == null) //&& )//&& ClassId != null) //)
    {
        Student = (
            from a in db.Student_Re_Admission
            join b in db.Student_Registration on a.Registration_Id equals b.Registration_Id
            join c in db.Student_Roll_No_Assign on a.Registration_Id equals c.Registration_Id
            where c.Academic_Year_Id == AcademicId &&
                c.Company_ID == CompanyId &&
                c.COMPANY_LOCATION_ID == CompanyLocationId &&
                a.Academic_Year_Id == AcademicId &&
                c.Class_Id == ClassId &&
                a.Class_Id == ClassId &&
                a.Section_Id == SectionId &&
                c.Section_Id == SectionId &&
我试着像下面一样,但得到了相同的学生名单数据

var merged = new List<StudentList>(Student);
                merged.Except(Student.Where(p2 => RegId.Exists(p1 => p2.Registration_Id != p1.Registration_Id)));
var合并=新列表(学生);
合并。除了(Student.Where(p2=>RegId.Exists(p1=>p2.Registration\u Id!=p1.Registration\u Id));

我想您只需要更换
a.Registration\u Id!=RegIds
带有:

!RegIDs.Contains(a.Registration_Id)

我想你只需要更换
a.Registration\u Id!=RegIds
带有:

!RegIDs.Contains(a.Registration_Id)

第一个必须进行比较的变量列表

var RegId = (from a in db.Student_Marks_Percentage
                         where a.Delete_Flag == false
                         && a.Exam_Id == ExamId
                        && a.Academic_Year_Id == AcademicId
                        && a.Class_Id == ClassId
                         select a).ToList();
必须获取数据的第二个列表

List<StudentList> Student = new List<StudentList>();

            if (AcademicId != null && CompanyId != null && CompanyLocationId != null && ClassId == null && SectionId == null) //&& )//&& ClassId != null) //)
            {
                Student = (from a in db.Student_Re_Admission
                           join b in db.Student_Registration on a.Registration_Id equals b.Registration_Id
                           join c in db.Student_Roll_No_Assign on a.Registration_Id equals c.Registration_Id                           

                           where c.Academic_Year_Id == AcademicId && c.Company_ID == CompanyId && c.COMPANY_LOCATION_ID == CompanyLocationId
                           && a.Academic_Year_Id == AcademicId && c.Class_Id == ClassId && a.Class_Id == ClassId
                           && a.Section_Id == SectionId && c.Section_Id == SectionId
                           //&& a.Registration_Id != RegId.Contains(a.Registration_Id)
                           && a.Promoted == false && a.Delete_Flag == false
                           //a.Academic_Year_Id == AcademicId && a.Company_ID == CompanyId && a.COMPANY_LOCATION_ID == CompanyLocationId

                           select new StudentList()
                           {
                               Registration_Id = a.Registration_Id,
                               Admission_No = a.Admission_No,
                               Student_First_Name = a.Student_First_Name,
                               Student_Middle_Name = a.Student_Middle_Name,
                               Student_Last_Name = a.Student_Last_Name,
                               Set_Roll_No = c.Set_Roll_No,
                               Roll_Id = c.Roll_Id

                           }).OrderBy(a => a.Registration_Id).ToList();
}

第一个必须进行比较的变量列表

var RegId = (from a in db.Student_Marks_Percentage
                         where a.Delete_Flag == false
                         && a.Exam_Id == ExamId
                        && a.Academic_Year_Id == AcademicId
                        && a.Class_Id == ClassId
                         select a).ToList();
必须获取数据的第二个列表

List<StudentList> Student = new List<StudentList>();

            if (AcademicId != null && CompanyId != null && CompanyLocationId != null && ClassId == null && SectionId == null) //&& )//&& ClassId != null) //)
            {
                Student = (from a in db.Student_Re_Admission
                           join b in db.Student_Registration on a.Registration_Id equals b.Registration_Id
                           join c in db.Student_Roll_No_Assign on a.Registration_Id equals c.Registration_Id                           

                           where c.Academic_Year_Id == AcademicId && c.Company_ID == CompanyId && c.COMPANY_LOCATION_ID == CompanyLocationId
                           && a.Academic_Year_Id == AcademicId && c.Class_Id == ClassId && a.Class_Id == ClassId
                           && a.Section_Id == SectionId && c.Section_Id == SectionId
                           //&& a.Registration_Id != RegId.Contains(a.Registration_Id)
                           && a.Promoted == false && a.Delete_Flag == false
                           //a.Academic_Year_Id == AcademicId && a.Company_ID == CompanyId && a.COMPANY_LOCATION_ID == CompanyLocationId

                           select new StudentList()
                           {
                               Registration_Id = a.Registration_Id,
                               Admission_No = a.Admission_No,
                               Student_First_Name = a.Student_First_Name,
                               Student_Middle_Name = a.Student_Middle_Name,
                               Student_Last_Name = a.Student_Last_Name,
                               Set_Roll_No = c.Set_Roll_No,
                               Roll_Id = c.Roll_Id

                           }).OrderBy(a => a.Registration_Id).ToList();
}

你能解释一下结果是什么吗。您所说的id列表有点不清楚是第一个(Reg)查询的结果还是where子句中唯一的id?我想要一个结果:获取不应包含var RegId listsplz注册id的数据现在查看我更新的上一个。您能解释一下除了结果之外还有什么吗。您提到的id列表有点不清楚是第一个(Reg)查询的结果还是where子句中的唯一id?我想要一个结果:获取不应包含var RegId listsplz的RegistrationId的数据现在查看我更新的最后一个。in contains(Registration_id)什么是“Registration_id”?抱歉,我忘了
a.
部分。现在有意义吗?获取编译时错误:错误227“System.Collections.Generic.List.Contains(Model.Student\u Marks\u Percentage)”的最佳重载方法匹配项包含一些无效参数(Registration\u Id)“Registration\u Id”是什么?抱歉,我忘记了
a.
部分。现在有意义了吗?获取编译时错误:错误227“System.Collections.Generic.List.Contains(Model.Student\u Marks\u Percentage)”的最佳重载方法匹配具有一些无效参数