2014-06-28 6 views
0

я создал простой БД с именем больница и у меня есть несколько столбцов enter image description here .I заполнили первый выпадающий список с именем drdoctors.And работаетConfused о Linq запросе

protected void Page_Load(object sender, EventArgs e) 
    { 

     if (!Page.IsPostBack) { 

      fetchDoctors(); 
     } 

    } 

    void fetchDoctors() { 

     HospitalEntities entitiy = new HospitalEntities(); 
     List<Doctor> doc = entitiy.Doctors.ToList(); 
     drDoctor.DataSource = doc; 
     drDoctor.DataTextField = "Name"; 
     drDoctor.DataValueField = "DoctorNo"; 
     drDoctor.DataBind(); 


    } 

То, что я хочу сделать, это заполнить другие выпадающего с пациентами этого врача.

protected void drDoctor_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     int id= Int32.Parse( drDoctor.SelectedValue); 
     HospitalEntities entities = new HospitalEntities(); 

     var query= from p in entities.Doctors 


    } 

Но LINQ запросы так complicated.How я могу это сделать

ответ

1

Это должно примерно это сделать. Обратите внимание, что этот код не был протестирован и может содержать незначительные ошибки.

protected void drDoctor_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     int id= Int32.Parse( drDoctor.SelectedValue); 
     HospitalEntities entities = new HospitalEntities(); 

     var query= (from d in entities.Doctors 
        join m in entities.MedExams on d.DoctorNo equals p.DoctorNo 
        join p in entities.Patients on m.PatientNo equals p.PatientNo 
        where d.DoctorNo == id 
        select p).ToList(); 

     //Populate Patients from query 

    } 
0

Посмотрите на свою диаграмму, похоже, что у вас нет отношений с внешним ключом. Я бы очень рекомендовал это сделать (по бесчисленным причинам). Но сделав это, вы сможете «присоединиться» к столам намного легче:

protected void drDoctor_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    int id = Int32.Parse(drDoctor.SelectedValue); 
    HospitalEntities entities = new HospitalEntities(); 


    drDoctor.DataSource = entities.Doctors 
     .Where(x => x.DoctorNo == id) 
     .SelectMany(x => s.MedExams.Select(y => y.Patients)); 
    drDoctor.DataBind(); 
}