【发布时间】:2009-10-05 18:40:12
【问题描述】:
我的数据表存在成本问题。我需要用更智能的代码替换代码。
我有一个数据表,样本值如下:
列:id、user_id、开始时间、结束时间
行样本:1 , 5, 05.10.2009 08:00:00,05.10.2009 17:00
我的伪代码是
function something()
{
for(int i=0;i<datatable.Rows.Length;i++)
{
if(Someobject.variable.Equals(dt.Rows[i][user_id].ToString()))
{
if(Date.Compare(somevariable,dt.Rows[i][starttime].ToString())!=0)
{
//Do something
}
}
}
}
就是这样。数据表有一千多行,在asp.net页面加载时,函数要调用近千次。
所以我必须改变它。
我考虑过使用字典,但它似乎只需要两个变量。你能给我什么建议。
编辑:
我还不能解决问题。这是相关的代码。提前致谢。
protected void RadScheduler_Randevu_TimeSlotCreated(对象发送者,Telerik.Web.UI.TimeSlotCreatedEventArgs e) {
for (int i = 0; i < calismaSaatleridt.Rows.Count; i++)
{
if (RadScheduler_Randevu.SelectedView.Equals(SchedulerViewType.DayView))
{
if (RadScheduler_Randevu.SelectedDate.ToShortDateString().Equals(Convert.ToDateTime(calismaSaatleridt.Rows[i]["calisma_baslangic"]).ToShortDateString()))
{
if (e.TimeSlot.Resource.Key.ToString().Equals(calismaSaatleridt.Rows[i]["hekim_id"].ToString()))
{
if (DateTime.Compare(e.TimeSlot.Start, Convert.ToDateTime(calismaSaatleridt.Rows[i]["calisma_baslangic"])) < 0 || DateTime.Compare(e.TimeSlot.End, Convert.ToDateTime(calismaSaatleridt.Rows[i]["calisma_bitis"])) > 0)
{
e.TimeSlot.CssClass = "Disabled";
}
}
}
}
}
}
这是返回结果集的函数。
private DataTable calismaSaatiGetir(string yonetici_id)
{
SqlConnection connection = new SqlConnection();
connection.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlCommand command = new SqlCommand();
command.CommandText = "select calisma_saati.id,kullanici.id as hekim_id,LEFT(CONVERT(VARCHAR,calisma_saati.tarih,104),10)+ ' ' +LEFT(CONVERT(VARCHAR,calisma_saati.baslangic_saati,108),5) AS calisma_baslangic,LEFT(CONVERT(VARCHAR,calisma_saati.tarih,104),10)+ ' '+LEFT(CONVERT(VARCHAR,calisma_saati.bitis_saati,108),5) AS calisma_bitis from calisma_saati JOIN kullanici ON kullanici.id=calisma_saati.kullanici_id WHERE yonetici_id='" + Session["yonetici"].ToString() + "' ";
command.Connection = connection;
connection.Open();
SqlDataAdapter da = new SqlDataAdapter(command.CommandText, connection);
DataSet ds = new DataSet();
da.Fill(ds, "calisma_saati");
calismaSaatleridt = ds.Tables["calisma_saati"];
connection.Close();
return calismaSaatleridt;
}
【问题讨论】:
标签: c# asp.net optimization dictionary datatable