PDA

View Full Version : سوال: مقایسه بین دو مقدار رشته ای



aria2006
دوشنبه 30 بهمن 1396, 13:04 عصر
سلام. من یک وب سرویس(webapi) دارم که یک بازه تاریخی رو میگیره و مقایسه میکنه و اطلاعات بین تاریخ کوچکتر و بزرگتر رو از دیتابیس استخراج میکنه:


public IEnumerable<miladUssd.Models.DomainModels.A_ESHTRAK> GetGisAb(string LowDate,string UpDate)
{

var model3 = bleshtrak.Where(p => Convert.ToDouble(p.A_DATENASBA) > Convert.ToDouble(LowDate) & Convert.ToDouble(p.A_DATENASBA) < Convert.ToDouble(UpDate)).ToList();
return(model3);

}

ورودی تابع هر دو تاریخ (96/11/30) ودر دیتابیس از نوع رشته ای(varchar) هستندالان مشکل اینجاست اگر در کوئری که دارم بدون کانورت فیلد خاصی بخوام اجرا کنم خطا میده که دو مقدار رشته ای رو از لحاظ بزرگتر یا کوچکتر نمیتونم با هم مقایسه کنم... حالا هم میام کانورت میزنم اول فیلدها(مثل دابل در بالا) ایندفعه حین اجرا ارور میده . کانورتهای دیگه مثل datetime و int هم امتحان کردم ولی بازم خطا میگیره...
دوستان ممکنه این سوال مبتدی باشه ولی ممنون میشم اگه راهنمایی ام کنید.
ضمنا با entityframwork به دیتابیس اوراکل کانکت شدم.

raha raad
پنج شنبه 03 اسفند 1396, 13:57 عصر
سلام.
شاید اینها کمک بکنه:
https://stackoverflow.com/questions/32330661/how-to-compare-two-dates-in-string-format?lq=1
https://www.codeproject.com/Questions/352869/How-to-compare-two-date-using-asp-net-Csharp

ali_md110
پنج شنبه 03 اسفند 1396, 19:52 عصر
مشکل شما در اینه که تاریخ رو بصورت شمسی در دیتابیس ذخیره کردید و توابع موجود فقط بر روی تاریخهای میلادی جوابگجو هست
برای حل مشکل شما باید با Projection یعنی ابتدا علامت "/" از تاریخها حذف و تبدیل به عدد بشه و سپس این دو تاریخ از هم کسر بشه
میتونید از Resolveusing Automapper هم استفاده کنید