PDA

View Full Version : سوال: جستجو بین دو تاریخ از نوع رشته ای با linq



asadsheidaharzand
سه شنبه 06 اردیبهشت 1390, 11:18 صبح
سلام دوستان.
میخواستم بدونم چطوری میتونم اطلاعات بین دو تاریخ مشخص رو با linq از sql server فراخوانی کنم و نمایش بدم، با توجه به اینکه فیلد تاریخ توی دیتابیس رو به صورت رشته ای معرفی کردم و تاریخ ها هم به صورت شمسی ذخیره شدند(با تاریخ میلادی بلدم و مشکلی ندارم اما میخام با شمسی اینکارو انجام بدم). مثلا میخام اطلاعات رکوردهایی که بین تاریخ 01/01/1390 تا 31/01/1391 هستند رو توی datagrid نمایش بدم.
یک نکته اینکه نمیخام تاریخ رو توی دیتابیس به صورت میلادی ذخیره کنم و میخام شمسی باشه.
آیا راهی وجود داره؟ ضمنا با سی شارپ مینویسم
مهندس های فروم منتظر نظراتتون هستم.
ممنون

barbodsoft.com
سه شنبه 06 اردیبهشت 1390, 15:20 عصر
"/" ها رو حذف کن بعد بین رشته ها مقایسه کن. البته "/" باشه هم می شه ولی اگه حذف کنی مطمئن تری. در ضمن وقتی داری مقایسه می کنی ماه و روز حتما باید دو رقمی باشه. مثلا بجای 1 باید 01 باشه.

ضمنا : رشته ها هم مثل عداد به راحتی قابل مقایسه هستن. بازم برای اطمینان می تونی "/" حذف و رشته رو به عدد تبدیل کنی.

amireto
یک شنبه 08 خرداد 1390, 00:42 صبح
سلام خسته نباشيد
من هم چنين مشكلي دارم ولي وقتي كدش رو مي نويسم با چنين اروري مواجه مي شوم


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

مشكل از كجاست

aliburnout
یک شنبه 08 خرداد 1390, 13:39 عصر
سلام دوست عزیز
من خودم هم این مشکل رو داشتم
واسه این کار من 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);

PetekDincos
یک شنبه 08 خرداد 1390, 17:23 عصر
با سلام
برای این کار می شه از متد CompareTo() استفاده کرد به این صورت

db_Context.Table1.where(n=>n.Date.CompareTo("1390/10/20")>-1 && n.Date.CompareTo("1390/11/20")<1);

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

amireto
جمعه 13 خرداد 1390, 20:08 عصر
با سپاس
و همچنين با 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;

aryanss
یک شنبه 22 دی 1392, 15:21 عصر
سلام
من داخل پروژم از این کد استفاده کردم
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

Mahmoud.Afrad
پنج شنبه 26 دی 1392, 16:19 عصر
سلام
من داخل پروژم از این کد استفاده کردم
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;

farnazy
جمعه 03 شهریور 1396, 16:05 عصر
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();

این کد رو واسه جستجوی بین دو تاریخ نوشتم ولی اجرا میکنم میگه هیچ نتیجه ای یافت نشد
هیچی نشون نمیده در گرید ویو:گریه: