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

و

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

iran58

مشکل مقدار int در DynamicQuery

سلام

من دستور زیر را نوشته ام

 public ICollection<Table_1> Search(
            string natiolId, string lName, string fName, Int32? sex,
            Expression<Func<Table_1, bool>> orderBy = null)
        {
            var db = new TestEntities();
            using (db)
            {
                var q = db.Table_1.Where(u => u.NationalID.StartsWith(natiolId));
                q = q.Where(c => c.LastName.StartsWith(lName));
                q = q.Where(c => c.FirstName.StartsWith(fName));
                q = q.Where(c => c.Sex.ToString().Contains(sex.ToString()));
                if (orderBy != null) q = q.OrderBy(orderBy);
                return q.ToList();
            }
        }

کد بالا در مهمه موارد بجز مورد زیر درست کار میکند

وقتی sex(مقدار int32?) را برابر null قرار می دهم هیچ داده ای برنمیگرداند درصورتیکه برای اسم وفامیلی و کد ملی این مشکل وجود ندارد

باید برای رفع این مشکل باید چکار کنم

لذت یادگیری با توسینسو
به عنوان شخصی که مدت هاست از سایت توسینسو استفاده می کنم باید بگم که واقعاً یکی از بهترین مرجع ها برای ارتقاء دانش شخصی هست. دوره های سایت، راهکارها و مطالب، همگی عالی هستند.

سلام و درود

توضیح مختصر:

علت مشکل شما این است که سه پارامتر از نوع string هستند و رفرنس تایپ می باشند و مقدار null را می پذیرند ولی پارامتر نوع int جزء Value Type ها می باشد و باید مقداری داشته باشد ولی چون قصد استفاده از null را داریم برای همین از علامت ؟ استفاده می کنیم

برای حل مشکل در متغیرهای از نوع Value Type با قابلیت Nullable ، باید وجود مقدار را در آنها بررسی کنیم برای همین

از sex.Hasvalue برای بررسی وجود مقدار

و از sex.value برای گرفتن مقدار

استفاده نمایید

موفق باشید

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

You can buy cheaper in our wonderful discounts