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 قرار می دهم هیچ داده ای برنمیگرداند درصورتیکه برای اسم وفامیلی و کد ملی این مشکل وجود ندارد
باید برای رفع این مشکل باید چکار کنم
1 پاسخ
0
سلام و درود
توضیح مختصر:
علت مشکل شما این است که سه پارامتر از نوع string هستند و رفرنس تایپ می باشند و مقدار null را می پذیرند ولی پارامتر نوع int جزء Value Type ها می باشد و باید مقداری داشته باشد ولی چون قصد استفاده از null را داریم برای همین از علامت ؟ استفاده می کنیم
برای حل مشکل در متغیرهای از نوع Value Type با قابلیت Nullable ، باید وجود مقدار را در آنها بررسی کنیم برای همین
از sex.Hasvalue برای بررسی وجود مقدار
و از sex.value برای گرفتن مقدار
استفاده نمایید
موفق باشید