Найти элементы, соответствующие любому условию, из общего списка - PullRequest
2 голосов
/ 06 августа 2010

У меня есть коллекция пациентов в списках с именем 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);

        }

Ответы [ 2 ]

0 голосов
/ 06 августа 2010

Вы должны использовать отражение, чтобы вызвать свойство, имя которого передается.

p.GetType().GetProperty(dataPair[i].Name).GetValue(p) == dataPair[i].OutputValue;
0 голосов
/ 06 августа 2010
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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...