ورود

View Full Version : چگونگی استفاده از تاریخ شمسی در قسمتی شرطی دستورات Linq



mohsen_zelzela00
چهارشنبه 08 شهریور 1391, 01:10 صبح
با سلام خدمت اساتید محترم
من درون دیتابیس خودم تاریخ را به صورت شمسی (به صورت رشته) درون دیتابیس ذخیره می کنم . حالا می خواهم که کاربر یک بازه تاریخی را وارد کند و من اطلاعات درون آن بازه را با استفاده از Linq نمایش دهم وقتی که می خواهم از > یا < استفاده کنم چون تاریخ به صورت رشته هست اجازه استفاده رو بهم نمی دهد ممنون میشم اساتید محترم راهنمایی کنند.

saeid taheri
دوشنبه 13 شهریور 1391, 08:25 صبح
سلام
بهتره تاريخ رو به صورت ميلادي ذخيره كنيد تا نتيجه بگيريد
براي نمايش تاريخ ميلادي به صورت شمسي بهتره از persian culture استفاده نماييد
موفق باشيد

SuTeDell
شنبه 08 مهر 1391, 23:48 عصر
سلام
بهتره تاريخ رو به صورت ميلادي ذخيره كنيد تا نتيجه بگيريد
براي نمايش تاريخ ميلادي به صورت شمسي بهتره از persian culture استفاده نماييد
موفق باشيد

سلام دوست عزیز
من هم تو برنامم از تازیخ شمسی استفاده کردم.میخوام ی گزارش تهیه کنم که براساس یک بازه زمانی جستجو میکنه.اما چون در دیتابیس نوع تاریخ را nchar انتخاب کردم نمیشه در رشته ها از علامت > یا < استفاده کرد.
اگه میشه کمکم کنید.
ممنون

Mahmoud.Afrad
سه شنبه 18 مهر 1391, 15:08 عصر
عملگرهای < > در sql برای مقایسه رشته به کار میره ولی در سی شارپ باید از متد compare استفاده کنید( البته باید روز و ماه دو رقمی و سال 4رقمی ثبت شده باشه و نیز در جستجو ، تاریخی که کاربر وارد میکنه رو اعتبارسنجی کنید و در صورت لزوم روز و ماه رو دو رقمی کنید)
مثال:

var result = from p in context.tbl
where string.Compare(p.date, textBox1.Text) >= 0 // p.date >= textBox1.Text
&& string.Compare(p.date, textBox2.Text) <= 0 // p.date <= textBox2.Text
select p;

همونطور که میدونید اولین شکل متد compare دو پارامتر ورودی میپذیره. اگر پارامتر اول با پارامتر دوم برابر باشه این متد 0 برمیگردونه. اگر پارامتر اول از پارامتر دوم بزرگتر بود عددمثبت و اگر پارامتر اول از پارامتر دوم کوچکتر بود عددمنفی برمیگردونه.

mousa1992
سه شنبه 15 مرداد 1392, 17:42 عصر
همونطور که میدونید اولین شکل متد compare دو پارامتر ورودی میپذیره. اگر پارامتر اول با پارامتر دوم برابر باشه این متد 0 برمیگردونه. اگر پارامتر اول از پارامتر دوم بزرگتر بود -1 و اگر پارامتر اول از پارامتر دوم کوچکتر بود +1 برمیگردونه.

سلام محمود جان
از object browser ویژوال سرچی انجام دادم تو توضیحات متد Compare نوشته بود در صورتی که پارامتر اول بزرگتر از دوم باشه مقدار بزرگتر از صفر برمیگردونه و اگه کمتر ، کمتر از صفر و برابر هم که 0 میشه
و توی تستی که خودم انجام دادم هم به همین نتیجه رسیدم ؛ اما برا سرچ بین دو تاریخ به مشکل برخوردم! نمیدونم مشکل از کجاست - لینک (http://barnamenevis.org/showthread.php?412743-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF%D9%87%D8%A7-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%A7%D8%B3-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE&p=1842392#post1842392)

موفق باشید

Mahmoud.Afrad
سه شنبه 15 مرداد 1392, 18:26 عصر
سلام محمود جان
از object browser ویژوال سرچی انجام دادم تو توضیحات متد Compare نوشته بود در صورتی که پارامتر اول بزرگتر از دوم باشه مقدار بزرگتر از صفر برمیگردونه و اگه کمتر ، کمتر از صفر و برابر هم که 0 میشه
و توی تستی که خودم انجام دادم هم به همین نتیجه رسیدم ؛ اما برا سرچ بین دو تاریخ به مشکل برخوردم! نمیدونم مشکل از کجاست - لینک (http://barnamenevis.org/showthread.php?412743-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF%D9%87%D8%A7-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%A7%D8%B3-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE&p=1842392#post1842392)

موفق باشید
بله اون قسمت رو اشتباه کرده بودم چون روی فرم جای تکست باکس ها رو جابجا گذاشته بودم این شد که خودمم اشتباه توضیح دادم اما کوئری درست بود.