جستجو بین دو تاریخ از نوع رشته ای با linq
سلام دوستان.
میخواستم بدونم چطوری میتونم اطلاعات بین دو تاریخ مشخص رو با linq از sql server فراخوانی کنم و نمایش بدم، با توجه به اینکه فیلد تاریخ توی دیتابیس رو به صورت رشته ای معرفی کردم و تاریخ ها هم به صورت شمسی ذخیره شدند(با تاریخ میلادی بلدم و مشکلی ندارم اما میخام با شمسی اینکارو انجام بدم). مثلا میخام اطلاعات رکوردهایی که بین تاریخ 01/01/1390 تا 31/01/1391 هستند رو توی datagrid نمایش بدم.
یک نکته اینکه نمیخام تاریخ رو توی دیتابیس به صورت میلادی ذخیره کنم و میخام شمسی باشه.
آیا راهی وجود داره؟ ضمنا با سی شارپ مینویسم
مهندس های فروم منتظر نظراتتون هستم.
ممنون
نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq
"/" ها رو حذف کن بعد بین رشته ها مقایسه کن. البته "/" باشه هم می شه ولی اگه حذف کنی مطمئن تری. در ضمن وقتی داری مقایسه می کنی ماه و روز حتما باید دو رقمی باشه. مثلا بجای 1 باید 01 باشه.
ضمنا : رشته ها هم مثل عداد به راحتی قابل مقایسه هستن. بازم برای اطمینان می تونی "/" حذف و رشته رو به عدد تبدیل کنی.
نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq
سلام خسته نباشيد
من هم چنين مشكلي دارم ولي وقتي كدش رو مي نويسم با چنين اروري مواجه مي شوم
Error 1 Operator '>' cannot be applied to operands of type 'string' and 'string'
مشكل از كجاست
نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq
سلام دوست عزیز
من خودم هم این مشکل رو داشتم
واسه این کار من select رو داخل Stored Procedure نوشتم بعد داخل یرنامه استفاده کردم
کد داخل Stored Procedure
ALTER PROCEDURE dbo.SP_name @date1 nvarchar(10), @date2 nvarchar(10)
as
select * from tabelname
where date >= @date1 and date <= @date2
return
داخل برنامه هم
var db = new linq_nameDataContext();
DataGridView.DataSource = db.SP_name (txtdate1.Text, txtdate2.Text);
نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq
با سلام
برای این کار می شه از متد CompareTo() استفاده کرد به این صورت
db_Context.Table1.where(n=>n.Date.CompareTo("1390/10/20")>-1 && n.Date.CompareTo("1390/11/20")<1);
و اون تاریخ هایی که نوشتم رو کاربر وارد می کنه با تشکر
نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq
با سپاس
و همچنين با compare
var query = from c in db.List
where string.Compare( c.ReceptionDate , txtPdateStart.Text)>=0
&&string.Compare( c.ReceptionDate , txtPdateEnd.Tex)<=0
select c;
نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq
سلام
من داخل پروژم از این کد استفاده کردم
DateTime d1;
DateTime d2;
d1 =Convert.ToDateTime (txtStartDate.Text);
d2 =Convert.ToDateTime (txtEndDate.Text);
var search = from n in db.BorrowTbls
where string.Compare( n.DateEnd , d1.ToString())>=0
&& string.Compare( n.DateEnd , d2.ToString())<=0
//where (n.DateEnd.CompareTo(d1) > -1
// && n.DateEnd.CompareTo(d2) < 1)
select new
{
n.DateEnd,
nam = n.MemberTbl.NameMem
};
DgvSms.DataSource = search;
اما در gridview چیزی نشون نمیده
فرمت تاریخ هام در جدول و و وارد کردنم برا جستجو اینجوریه 1392/05/21
نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq
نقل قول:
نوشته شده توسط
aryanss
سلام
من داخل پروژم از این کد استفاده کردم
DateTime d1;
DateTime d2;
d1 =Convert.ToDateTime (txtStartDate.Text);
d2 =Convert.ToDateTime (txtEndDate.Text);
var search = from n in db.BorrowTbls
where string.Compare( n.DateEnd , d1.ToString())>=0
&& string.Compare( n.DateEnd , d2.ToString())<=0
//where (n.DateEnd.CompareTo(d1) > -1
// && n.DateEnd.CompareTo(d2) < 1)
select new
{
n.DateEnd,
nam = n.MemberTbl.NameMem
};
DgvSms.DataSource = search;
اما در gridview چیزی نشون نمیده
فرمت تاریخ هام در جدول و و وارد کردنم برا جستجو اینجوریه 1392/05/21
برای چه به datetime تبدیل کردی؟
var search = from n in db.BorrowTbls
where string.Compare( n.DateEnd , txtStartDate.Text)>=0
&& string.Compare( n.DateEnd , txtEndDate.Text)<=0
select new
{
n.DateEnd,
nam = n.MemberTbl.NameMem
};
DgvSms.DataSource = search;
نقل قول: جستجو بین دو تاریخ از نوع رشته ای با linq
var db = new mydataDataContext();
var search = (from a in db.tbl_moshtaris
join b in db.tbl_reportsmonshis on a.code_moshtari equals b.code_moshtari_report into s
from rs in s.DefaultIfEmpty()
where string.Compare(rs.datte, cTextBox2.ToString()) >= 0
&& string.Compare(rs.datte, cTextBox3.ToString()) <= 0
//where (n.DateEnd.CompareTo(d1) > -1
// && n.DateEnd.CompareTo(d2) < 1)
select new
{
rs.datte,
rs.name_rescuer,
rs.familiy_rescuer,
rs.ezam_rescuer,
rs.type_of_help,
rs.type_devastation_type,
rs.type_of_service,
rs.number_of_service,
rs.cost_sum,
rs.start_time,
rs.end_time,
rs.code_moshtari_report
});
if (search.Count() == 0)
{
// MessageBox.Show("هیچ نتیجه ای یافت نشد", "", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
FMessegeBox.FarsiMessegeBox.Show("هیچ نتیجه ای یافت نشد", "", FMessegeBox.FMessegeBoxButtons.Ok, FMessegeBox.FMessegeBoxIcons.Information);
}
dataGridView1.DataSource = search;
dataGridView1.Columns[0].HeaderText = "تاریخ";
dataGridView1.Columns[1].HeaderText = "نام امدادگر";
dataGridView1.Columns[2].HeaderText = "نام خانوادگی امدادگر";
dataGridView1.Columns[3].HeaderText = "اعزام امدادگر";
dataGridView1.Columns[4].HeaderText = "نوع امداد رسانی";
dataGridView1.Columns[5].HeaderText = "نوع خرابی";
dataGridView1.Columns[6].HeaderText = "نوع سرویس";
dataGridView1.Columns[7].HeaderText = "تعداد سرویس";
dataGridView1.Columns[8].HeaderText = "هزینه کل";
dataGridView1.Columns[9].HeaderText = "زمان شروع امداد رسانی";
dataGridView1.Columns[10].HeaderText = "زمان پایان امداد رسانی";
dataGridView1.Columns[11].HeaderText = "کد مشتری";
//int counter = dt.Rows.Count;
//textBox1.Text=counter.ToString();
// DataTable dt = new DataTable();
textBox2.Text = dataGridView1.Rows.Count.ToString();
این کد رو واسه جستجوی بین دو تاریخ نوشتم ولی اجرا میکنم میگه هیچ نتیجه ای یافت نشد
هیچی نشون نمیده در گرید ویو:گریه: