PDA

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



aliasghar2
پنج شنبه 05 اسفند 1389, 17:40 عصر
سلام دوستان
من تو بانک برنامه تاریخ ثبت اطلاعات رو به صورت شمسی اما با فرمت string ذخیره کردم
حالا اگه بخوام تو linq مقایسه کنم ارور opration <= not dose رو میده وقتی هم به date تبدیل می کنم به خاطر شمسی بودن آن ارور میده

var q=form k in ds.karbar where k.date => textbox1.text select k
با استفاده از convert

var q=form k in ds.karbar where convert.todate(k.date) =>convert.todate( textbox1.text) select k

AmirHarirbafan
پنج شنبه 05 اسفند 1389, 21:28 عصر
دوست عزیز، اگه تاریخ داخل بانک به صورت رشته ای و به صورت 1389/01/05 باشه، مقایسه رشته ای جواب خواهد داد
فکر کنم مشکل کار شما، استفاده از عملگر میباشد، باید جای مساوی و بزرگتر رو عوض کنید.
به خاطر داشته باشید که همیشه میگیم (بزرگتر مساوی) نه (مساوی بزرگتر)
امیدوارم مشکلتون حل شده باشه

amireto
یک شنبه 08 خرداد 1390, 11:16 صبح
سلام
دوستان من هم همين مشكل رو دارم
از operator هم درست استفاده كردم اما اصلا دو تا رشته رو مقايسه نميكنه به هر شكل بنويسي
مشكل كار من كجاست ؟



var query = from c in db.List
where c.ReceptionDate > txtPdateStart.Text
&& c.ReceptionDate < txtPdateEnd.Text
select c;




Error Operator '<' cannot be applied to operands of type 'string' and 'string'

حتي براي كد زير هم همين خطا رو ميده


string s = "891101";
string t = "891202";
if (s<t)
{
MessageBox.Show("Test");
}

b_savad
یک شنبه 08 خرداد 1390, 12:44 عصر
آقا برای مقایسه ی رشته از string.compare استفاده می کنن

amireto
یک شنبه 08 خرداد 1390, 14:07 عصر
دوست عزيز از پاسختون سپاسگذار
من قسمت اخر رو فقط برا مثال گذاشتم
از انجا كه دوستان در تالارهاي مرتبط با موضوع تاريخ شمسي گفتن به همين روش ساده دارن كار ميكنند ولي من نمي توستم
با اينكه در حالت عادي در مقايسه و جستجوهاي ساده خودم از compare استفاده ميكردم اما تو كوئري linq ازش استفاده نميكردم



var query = from c in db.List
where string.Compare( c.ReceptionDate , txtPdateStart.Text)>=0
&&string.Compare( c.ReceptionDate , txtPdateEnd.Tex)<=0
select c;

ati1674
دوشنبه 24 مرداد 1390, 11:03 صبح
اگه دستور رو به این شکل بنویسیم



'term_fdate

between @fdate and '2000/01/01


and



term_fdate between '1300/01/01'and @ldate




تاریخ 2000 باید تاریخی باشه که از بزرگترین تاریخ در دیتا بیس بزرگتر و 1300 تاریخی هست که از کوچکترین تاریخ کوچکتره.
fdate تاریخ شروع و @Ldate تاریخ پایان(از نوع char)). این دستور در where نوشته می شه.
.
اگه مستقیم 2 تا تاریخ ورودی رو مقایسه کنید جواب نمی ده