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

design - Custom Styling Qt Quick Controls -

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