50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

مشکل مقدار 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 قرار می دهم هیچ داده ای برنمیگرداند درصورتیکه برای اسم وفامیلی و کد ملی این مشکل وجود ندارد

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

پرسیده شده در 1397/11/24 توسط

1 پاسخ

0

سلام و درود

توضیح مختصر:

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

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

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

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

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

موفق باشید

پاسخ در 1397/11/25 توسط

پاسخ شما