2016-10-07 3 views
-1
public class PatientViewModel 
    { 
     public int PID { get; set; } 
     public string patientname { get; set; } 
     public virtual ICollection<Patient_VisitHistoryViewModel> Patient_VisitHistoryViewModelList { get; set; } 
     public virtual ICollection<Patient_insurancecompaniesViewModel> Patient_insurancecompaniesViewModelList { get; set; } 
    } 


public class Patient_VisitHistoryViewModel 
{ 
    public int VID { get; set; } 
    public string visitstudylist { get; set; } 
    public string visttype { get; set; } 
} 

public class Patient_insurancecompaniesViewModel 
{ 
    public int PINSID { get; set; } 
    public int PID { get; set; } 
    public int INSID { get; set; } 
    public string insurancecompanyname { get; set; } 
} 





public class Patient 
{ 
     public int PID { get; set; } // PID (Primary key) 
     public string patientname { get; set; } // patientname (length: 100) 

    // Reverse navigation 
     public virtual ICollection<Patient_insurancecompanies> Patient_insurancecompanies { get; set; } // Patient_insurancecompanies.FK_Patient_insurancecompanies_Patient 
     public virtual ICollection<Visit> Visit { get; set; } // Visit.FK_Visit_Patient 
} 


public class Visit 
{ 
     public int VID { get; set; } // VID (Primary key) 
     public int PID { get; set; } // PID 
     // Reverse navigation 
     public virtual ICollection<Visit_studiesperformed> Visit_studiesperformed { get; set; } // Visit_studiesperformed.FK_visits_studiesperformed_visits 

     // Foreign keys 
     public virtual Branch Branch { get; set; } // FK_visits_branches 
     public virtual Patient Patient { get; set; } // FK_Visit_Patient 
     public virtual Visittype Visittype { get; set; } // FK_Visit_Visittype 
} 



public class Visit_studiesperformed 
{ 
     public int VSPID { get; set; } // VSPID (Primary key) 
     public int VID { get; set; } // VID 
     public int STID { get; set; } // STID 

     // Reverse navigation 
     public virtual ICollection<Visit_studiesperformed_medicalreport> Visit_studiesperformed_medicalreport { get; set; } // Visit_studiesperformed_medicalreport.FK_visits_medicalreport_visits_studiesperformed 

     // Foreign keys 
     public virtual Studies Studies { get; set; } // FK_Visit_studiesperformed_studies 
     public virtual Visit Visit { get; set; } // FK_visits_studiesperformed_visits 
} 


public class Studies 
{ 
     public int STID { get; set; } // STID (Primary key) 
     public string studydescription { get; set; } // studydescription (length: 100) 

     // Reverse navigation 
     public virtual ICollection<Visit_studiesperformed> Visit_studiesperformed { get; set; } // Visit_studiesperformed.FK_Visit_studiesperformed_studies 
} 


public class Insurancecompany 
{ 
     public int INSID { get; set; } // INSID (Primary key) 
     public string insurancecompanyname { get; set; } // insurancecompanyname (length: 100) 

     // Reverse navigation 
     public virtual System.Collections.Generic.ICollection<Patient_insurancecompanies> Patient_insurancecompanies { get; set; } // Patient_insurancecompanies.FK_Patient_insurancecompanies_Insurancecompany 

} 



public ActionResult Edit(int PID) 
{ 

    Patient patient = bLLPatient.GetPatientByPID(PID); 

    List<Insurancecompany> ListOfInsuranceCompany = bLLControltables.GetList_Insurancecompany(); 
    List<Studies> ListofStudies = bLLControltables.GetList_Studies(); 

    PatientViewModel patientViewModel = mapper.Map<PatientViewModel>(patient); 

    patientViewModel.Patient_insurancecompaniesViewModelList.ToList().ForEach(x => x.insurancecompanyname = ListOfInsuranceCompany.Where(b => x.INSID == b.INSID).SingleOrDefault().insurancecompanyname); 

    return View(patientViewModel); 
} 

내가 어디있는 공공 ActionResult 편집 (int PID)를 봐. 나는linq 개체 그래프 탐색 쉼표로 구분 된 문자열

는이 코드로 필드 patientViewModel.Patient_insurancecompaniesViewModelList으로 수행 비슷한 얻을 관리해야 ... Studies.studydescription의 쉼표로 구분 된 목록을 확인하고 목록 patientViewModel.Patient_VisitHistoryViewModelList.visitstudylist의 int 저장하기 위해 노력하고

patientViewModel.Patient_insurancecompaniesViewModelList.ToList().ForEach(x => x.insurancecompanyname = ListOfInsuranceCompany.Where(b => x.INSID == b.INSID).SingleOrDefault().insurancecompanyname); 

그래서 내가해야 할 것입니다 : 열거 Patient_VisitHistoryViewModelList는, 각 방문을 얻고 각 studies.studydescription를 얻을 각 각 Visit_studiesperformed을 얻을 방문을 위해 각 Vist_studyperformed에 대한 .... 그런

어떻게 든 쉼표로 구분 된 문자열을 만들어 각 patientViewModel.Patient_insurancecompaniesViewModelList.visitstudylist에 저장하십시오.

나는 쉼표로 구분 된 목록을 여기에 만들 수있는 방법을 찾아 냈습니다. AutoMapper: Collection to Single string Property하지만 문제가 있습니다.

답변

0

단일이 아닌 조인을 사용하려면 문자열 배열이 필요합니다. 다음과 같이 시도하십시오. string results = String.Join (",", patientViewModel.Patient_insurancecompaniesViewModelList.ToList(). ForEach (x => x.insurancecompanyname = ListOfInsuranceCompany.Where (b => x.INSID == b.INSID). 선택 (Y => y.insurancecompanyname) .ToArray());.

+0

이 쉼표로 구분 된 문자열 내 반쯤 도착하지만 난 여전히 개체 모델을 통해 탐색하는 데 문제가 나는 아래에 당신의 공헌을하지 않았다 .personViewModel.Patient_VisitHistoryViewModelList.ToList() .ForEach (x => x.visitstudylist = patient.Visit.ToList(). ForEach (y => y.Visit_studiesperformed.ToList(). ForEach (z => z.Studies.studydescription.ToString())); 오류를 가져 오는 것은 함축적 일 수 없습니다. itly 무효로 변환 문자열 .... – rdurant

+0

속성의 일부가 null 인 것 같습니다. ToString()을 사용하면 항목이 null 일 때 오류가 발생합니다. 대신에 이것을 시도해보십시오 : string results = String.Join (",", patientViewModel.Patient_insurancecompaniesViewModelList.ToList(). ForEach (x => x.insurancecompanyname = ListOfInsuranceCompany.Where (b => (x.INSID == b.INSID) && (x.insurancecompanyname! = null)). (y => (string) y.insurancecompanyname) .ToArray())를 선택하십시오. – jdweng

0
 patientViewModel.Patient_VisitHistoryViewModelList.ToList().ForEach(x => x.visitstudylist = String.Join(", ", patient.Visit.Single(b => b.VID == x.VID).Visit_studiesperformed.Where(m => m.status == "Active").ToList().Select(w => ListofStudies.Where(b => w.STID== b.STID).SingleOrDefault().studydescription ) ) ); 

위는 솔루션입니다