در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

جست و جو پیشرفته در ASP.NET MVC

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

 if (_SearchBy == "Code")
                search = _Service.Where(x => x.Code == _search).ToList();
            if (_SearchBy == "Mail")
                search = _Service.Where(x => x.Mail == _search).ToList();
            if (_SearchBy == "PhoneNumber")
                search = _Service.Where(x => x.PhoneNumber == _search).ToList();

ولی اگه تعداد فیلدها زیاد بشود این کار باعث وقت گیر شدن پروژه میشود.یک روش دیگر این است که با استفاده از dynamic linq جست و جو رو طراحی کنیم، که این کار هم به نصبت سخت است.این روش را هم میتوانید در این لینک مشاهده کنید.ولی روش بهتر و اسانتر سلکت زدن فیلدها بر اساس پارامتر های رشته ای هست. تابع زیر را در نظر بگیرد

     public List<Your Class> Search(string _search, string _SearchBy)
        {
    var ResultSerach = _Service.Where(GetPropertyContainsValueExpression<Your Class>(_SearchBy, _search)).ToList();
        }

تابع بالا دو ورودی میگیرد که یکی نام فیلدی که میخواهیم بر اساس آن جست و جو کنیم،و مقدار دیگر هم مقداری که میخوایم جست و جو کنیم.توجه!!تابع GetPropertyContainsValueExpression کار جست و جو را انجام میدهد و چون ما تقریبا در تمام کلاسا عمل جست وجو داریم باید آنرا در یک کلاس base یا به صورت یک extension method بنویسیم. حال داخل متد GetPropertyContainsValueExpression میرویم

 public static Expression<Func<TSource, bool>> GetPropertyContainsValueExpression<TSource>(string propertyName, string value)
        {
            var param = Expression.Parameter(typeof(TSource), "x");
            var prop = Expression.Property(param, propertyName);
            var valueExp = Expression.Constant(value, typeof(string));
            var contains = Expression.Call(prop, "Contains", null, valueExp);
            return Expression.Lambda<Func<TSource, bool>>(contains, param);
        }

همان طور که در تابع بالا ملاحظه مشخص است.این تابع به صورت جنریک بوده و دو ورودی propertyName ,value که همان نام فیلد و مقدار جست و جو است رو دارا میباشد.بقیه کد بصورت بهینه توسط متخصصان نوشته شده است.کد این اموزش هم به زودی در github قرار خواهم داد . امیدوارم تونسته باشم مطلب مفیدی ارائه داده باشم

#جست_و_جو_در_دیتابیس #جستجوی_داده_در_asp.net #جست_و_جو_در_پایگاه_داده #جستجو_در_mvc #جستجوی_پیشرفته_در_c# #جستجوی_پیشرفته_در_mvc #جستجو_در_پایگاه_داده #جستجوی_پیشرفته_در_asp.net_mvc
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....