مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

peach2

عضویت از 1394/08/26

مشکل سرعت لود دیتا از sql با ef

  • یکشنبه 17 بهمن 1400
  • 15:28
تشکر میکنم

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

هدفم اینه که دقیقا بدونم کلمات سرچ شده چند بار تکرار شدن تا با اولویت بالا نشون بدم و کاربر به نتایج درستی دسترسی پیدا کنه .

 

 public List<Product> AutoCompleteProductList(string term = "")
        {
            string[] words = term.Split(' ');
            List<SearchResult> v = new List<SearchResult>();
            List<int> temp = new List<int>();
            if (!String.IsNullOrEmpty(term))
            {
                foreach (var text in words)
                {
                    temp.Clear();
                    temp = db.Products.Where(p => p.Product_Name.Contains(text)
                    || p.Product_English_Name.Contains(text)
                    || p.Product_ID.ToString() == text
                    || p.Product_Short_Info.Contains(text)
                    || p.Product_Tag.Contains(text)).Where(a => a.Product_Status).OrderByDescending(a => a.Product_ID).Select(r => r.Product_ID).ToList();
                    foreach (var item in temp)
                    {
                        SearchResult SearchResultTemp = v.FirstOrDefault(e => e.Product_ID == item);
                        if (SearchResultTemp != null)
                        {
                            SearchResultTemp.Count += 1;
                            v.RemoveAt(v.IndexOf(SearchResultTemp));
                            v.Add(SearchResultTemp);
                        }
                        else
                        {
                            v.Add(new SearchResult
                            {
                                Product_ID = item,
                                Count = 1
                            });
                        }
                    }
                }
            }

            List<int> end = v.OrderByDescending(e => e.Count).Select(e => e.Product_ID).ToList();
            List<Product> routeList = new List<Product>();
            foreach (var item in end)
            {
                Product p = db.Products.Find(item);
                routeList.Add(p);
            }
            return routeList;
        }

پاسخ های این پرسش

تعداد پاسخ ها : 0 پاسخ
در حال حاضر هیچ پاسخی ارسال نشده است
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)