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