2010-08-06 4 views
2

나는 lst_Patient라는 목록에 환자 컬렉션을 가지고 있습니다.일반 목록의 조건과 일치하는 항목 찾기

그리고 난이 사용자로부터 정보를 얻을 곳은 방법 :

public Patient[] GetPatientsBySearchParams(DataPair[] dataPair) 
     { 
    //return the array patients that match any of the criteria 
//Right Now I ma doing this didn't get any success : 

List<Patient> P = new List<Patient>(); 

      P = lst_Patient.FindAll(p => { p.FirstName = dataPair[0].OutputValue.ToString(); 
             p.LastName = dataPair[1].OutputValue.ToString(); 
             return true; 
return P.ToArray(); 

     } 

버튼에를 내가는 사용자가 텍스트 상자에 입력 된 정보를 가지고 클릭

private DataPair[] dpair; 
private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      InvalidSearch.Visibility = Visibility.Collapsed; 
      SearchResults.Visibility = Visibility.Visible; 

      dpair = new DataPair[]{ 
          new DataPair { Name = "FirstName", OutputValue = fst_Name.Text }, 
          new DataPair { Name = "LastName", OutputValue = lst_Name.Text }, 
          new DataPair { Name = "DateOfBirth", OutputValue = dob.Text }, 
          new DataPair { Name = "SSN", OutputValue = ssn.Text }, 
          new DataPair { Name = "PracticeNumber", OutputValue = pract_nbr.Text }, 
          new DataPair { Name = "ReferenceNumber", OutputValue = ref_nbr.Text }, 
          new DataPair { Name = "PlaceOfService", OutputValue = pos.Text }, 
          new DataPair { Name = "DateOfService", OutputValue = dos.Text}, 
          new DataPair { Name = "RenderingProvider", OutputValue = rndrng_prov.Text }, 
          new DataPair { Name = "AdmissionDate", OutputValue = admsn_date.Text } 
         }; 

      this.FetchData(); 
     } 


     private void FetchData() 
     { 

      Patient[] p = client.GetPatientsBySearchParams(dpair); 

     } 

답변

0
public Patient[] GetPatientsBySearchParams(DataPair[] dataPair) 
{  
    P = lst_Patient.FindAll(
delegate(Patient tmp){ 
    if(tmp.FirstName = dataPair[0].OutputValue || tmp.LastName = dataPair[1].OutputValue) 
    return true; 
    else 
    return false; 
} 
); 

return P.ToArray(); 
} 
+0

이 당신이 tmp.FirstName 것 대신 p.FirstName의 답변 에 할 필요가 일부 변경이 있고 난 || 그래서 대신 &&, 어떤 조건에 일치 할 ... 감사합니다 대답은. – Malcolm

+0

@Malcolm이 수정되었습니다. 당신이 람다 또는 difine 정적 함수를 사용할 수있는 anonimous 방법 대신에 뭐든간에. – Arseny

0

당신 리플렉션을 사용하여 이름이 전달 된 속성을 호출해야합니다.

p.GetType().GetProperty(dataPair[i].Name).GetValue(p) == dataPair[i].OutputValue;