2014-06-07 53 views
0

我有兩張表Student和YearAcademy。我只選擇學生表,但加入了學生表的YearAcademy表。LINQ在連接表中查找數組元素

假設,在加入有YearAcademy錶行卷號1,2,3,4,5,6,7,8,9,10,11,12 ......,99

我要搜索:List rollno = {1,3,5};

如何將rollno作爲int值的列表傳遞給YearAcademy.rollno字段?

任何人都可以幫助我知道如何設置where子句搜索數組列表到yearacademy加入表嗎?

public ActionResult AttendanceStudentList(FormCollection form) 
     { 
      List<ViewModel.StudentViewModel> viewModel = new List<ViewModel.StudentViewModel>(); 
      string yearacademy = AcademyYear; 
      int studentclassid = Convert.ToInt32(form["classid"]); 
      string studentdivision = form["division"]; 
      string rno = "1,3,2";// form["rollno"]; 
      List<int> rollno = { 1,2,3,4};// new List<int>(rno.Split(',')); 

     string grno = form["grno"]; 

     using (var context = new emsEntities()) 
     { 
      var DataTable = from YearAcademy in context.tbl_YearAcademy 
          join Student in context.tbl_Student 
          on YearAcademy.Id_Student equals Student.Id_Student 
          where 
           (YearAcademy.FromToYear == yearacademy) 
          where 
           (YearAcademy.Id_ClassLevel == studentclassid) && rollno.Contains(YearAcademy.RollNo.Value.ToString())) 


          select 
          Student; 

      foreach (var iModel in DataTable) 
      { 

       tbl_Student obj = iModel; 
       StudentViewModel vm = new StudentViewModel(); 
       vm = ParseObject(vm, iModel); 
       viewModel.Add(vm); 

      } 


     } 
     ViewBag.Class = studentdivision; 

     return PartialView("StudentAttendanceList", viewModel); 
    } 

回答

0

你可以嘗試這樣的事:

var DataTable = from YearAcademy in context.tbl_YearAcademy 
       join Student in context.tbl_Student 
       on YearAcademy.Id_Student equals Student.Id_Student 
       where YearAcademy.FromToYear == yearacademy && 
         YearAcademy.Id_ClassLevel == studentclassid && 
         rollno.Contains(YearAcademy.RollNo) 
       select Student; 

您不必調用ToString()方法上YearAcademy.RollNo.Value。此外,您必須將rollno的聲明更改爲以下內容:

List<int?> rollno = { 1,2,3,4 };