c# - How to improve search speed in data grid view -


i have datagridview contain student details (first name, last name, gender, degree , burn date)

i write code perform "keyboard search" (for example "load" data locally):

    public class studentdetails     {         public string firstname;         public string lastname;         public string gender;         public string degree;         public datetime burndate;     };      public list<studentdetails> studentsearchlist = new list<studentdetails>();    // contain dgv searches      private void form1_load(object sender, eventargs e)     {         refreshdatagridview();     }      private void refreshdatagridview()     {         (int = 0; < 1000; i++)         {             studentdetails sd = new studentdetails();             sd.firstname = getrandomfirstname();             sd.lastname = getrandomlastname();             sd.gender = getrandomgender();             sd.degree = getrandomdegree();             sd.burndate = getrandomburndate();             studentsearchlist.add(sd);             addrowtodatagrid(sd);         }     }      bool detailscontain(studentdetails sd, string s)     {         if (sd.firstname.tolower().contains(s) ||             sd.lastname.tolower().contains(s) ||             sd.gender.tolower().contains(s) ||             sd.degree.tolower().contains(s) ||             sd.burndate.toshortdatestring().tostring().contains(s))             return true;         else             return false;     }      void addrowtodatagrid(studentdetails sd)     {         string[] row = new string[] { sd.firstname, sd.lastname, sd.gender, sd.degree, sd.burndate.toshortdatestring().tostring() };         datagridview1.rows.add(row);     }      private void textbox1_textchanged(object sender, eventargs e)     {         list<studentdetails> list_sd = new list<studentdetails>();         string s = textbox1.text;         s = s.tolower().trim();          foreach (studentdetails sd in studentsearchlist)             if (detailscontain(sd, s)) list_sd.add(sd);          // clear old rows         datagridview1.rows.clear();         datagridview1.refresh();          // adding new rows         foreach (studentdetails sd in list_sd)             addrowtodatagrid(sd);      } 

my problem searching , have no idea improve speed. tried declare list contain database , fill studentsearchlist last search result until user press on delete character it's not , it's cost memory…

maybe have search algorithm suggest ?

thank you

you need keep records "studentdetails" in array, not in list. thereafter, build additional index-array (unsigned int or short) each searchable field, , sort indices in arrays according values of appropriate fields. thereafter, use binary search each necessary field, log(n).


Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -