PDA

View Full Version : جستجو بر اساس تاریخ(رشته)



likemoon
یک شنبه 13 مرداد 1392, 16:02 عصر
سلام
می خوام یک جستجو برا اساس تاریخ با linq بنویسم
فیلد تاریخ در جدول به صورت رشته تعریف شده، و در برنامه هم توسط دو تا تکست باکس تاریخ ابتدایی و انتهایی گرفته میشه، حالا میخوام رکوردهایی که بین این دوتاریخ قرار دارند نمایش بدم. چکار باید کنم؟
کدی که خودم نوشته م اینه اما کار نمیکنه:

var Q = db.CounsultRequests.SingleOrDefault(c => int.Parse (c.CreationDate) <= int.Parse(textEdit1.Text.ToString() ) && int.Parse (c.CreationDate) >= int.Parse(textEdit2.Text.ToString()));

parvizwpf
یک شنبه 13 مرداد 1392, 16:22 عصر
http://stackoverflow.com/questions/2237440/c-sharp-linq-where-date-between-2-dates
var storeInfo = from info in DataContextObj.Store_Information where DateTime.Parse("Jan-06-1999") && t.OrderDate <= DateTime.Parse("Jan-10-1999") select info;

likemoon
یک شنبه 13 مرداد 1392, 16:26 عصر
آقا ممنون ولی من تاریخم رو به صورت استرینگ از تکست باکس میگیرم
مشکل من اینه که نمیخوام با نوع داده ای دیت تایم کار کنم

mehran6764
یک شنبه 13 مرداد 1392, 16:31 عصر
آقا ممنون ولی من تاریخم رو به صورت استرینگ از تکست باکس میگیرم
مشکل من اینه که نمیخوام با نوع داده ای دیت تایم کار کنم

شما می تونین همون رشته دریاقتی به نوع تاریخ تبدیل کنید

parvizwpf
یک شنبه 13 مرداد 1392, 16:33 عصر
اونی که نوشتم تبدیل کرده دیگه

likemoon
یک شنبه 13 مرداد 1392, 17:08 عصر
مرسی من از کد خودم استفاده کردم و فقط تبدیل کردم به تاریخ حل شد، تشکر

likemoon
یک شنبه 13 مرداد 1392, 17:59 عصر
اشتباه کردم، درست نشد:(
ارور جدیدی که میده اینه:

string waz not recognized as a valid datetime
خواهش میکنم بگید چکار کنم من با این!

amir3321
دوشنبه 14 مرداد 1392, 07:48 صبح
با سلام
خود sql می تونه با operator های <> با رشته ها ی عددی و تاریخی کار کنه ولی ef این قابلیت رو نداره اگه می خوایی با فیلد رشته با تاریخ کار کنی باید ابتدا select جامع روبزنی و بعد از دریافت روی اون لیست شرط رو لحاظ کنی بهتر از int برای تاریخ استفاده کنی

siepdb910104Entities db = new siepdb910104Entities();
var df = (from s in db.partdetails select s).ToList();
var gh = from p in df where int.Parse(p.datedrawing )< 13900101 select p.partid;

tooraj_azizi_1035
دوشنبه 14 مرداد 1392, 14:03 عصر
string.Compare("1392/01/31","1392/01/05", false)>=0
کد بالا اگر 01/31 از 01/05 بزرگتر باشد بیش از 0 و اگر برابر باشد 0 بر میگرداند.

salargham
دوشنبه 28 مرداد 1392, 22:23 عصر
این کد رو استفاده کن

dataGridView1.DataSource = Bank.V_Tbl_Tolids.Where(c.tarikh_tolid.CompareTo(t extBox8.Text.ToString()) >= 0) && (c.tarikh_tolid.CompareTo(textBox9.Text.ToString() ) <= 0)) ).Select(c => c);