PDA

View Full Version : بهتر کردن الگوریتم جستجو



MohammadHadi2031
یک شنبه 29 تیر 1393, 10:02 صبح
سلام من یک بانک اطلاعاتی دارم با یک جدول به نام پرونده که در آن دو ستون ( نام و نام خانوادگی ) وجود دارد من می خواهم وقتی کاربر متنی را نوشت در بانک اطلاعات جستجو کند به این صورت که ابتدا متن را تکه تکه کند:


string[] split = cmb_ShPar.Text.Split(' ');


سپس هر ردیفی از بانک که یکی از ستون هایش همه ی ردیف های آرایه splitرا داشت انتخاب کند:

برای مثال کاربر این را وارد می کند: "حس ع"

برنامه اول ردیف هایی که "حس" در نام یا نام خانوادگی آن ها است می گیرد سپس آن هایی که در نام یا نام خانوادگی آن ها "ع" وجود دارد را پیدا می کند بعد این دو لیست را اشتراک می گیرد که آن هایی که هم "حس" و هم "ع" دارد انتخاب شود برای مثال "حسن علیزاده" انتخاب می شود ولی "حمید عبدی" انتخاب نمی شود



var par = (from k in ParvandeHa
where k.ID.ToString().Contains(split[0]) || k.nam.Contains(split[0]) || k.namkh.Contains(split[0])
select k).ToList();
for (int i = 1; i < split.Length; i++)
{


par = par.Intersect(from k in ParvandeHa
where k.ID.ToString().Contains(split[i]) || k.nam.Contains(split[i]) || k.namkh.Contains(split[i])
select k).ToList();
}


این کد زمان حدودا یک ثانیه می کشد تا عمل کند این کار یک عیب دارد چون این کد با تغییر متن اجرا می شود یعنی با اضافه یا کم شدن یک کاراکتر
چه طور می شود زمان انجام این کد را سریع تر کرد