【发布时间】:2017-11-28 06:15:32
【问题描述】:
我正在使用类属性从 sql 数据库中获取记录并存储在 Dictionary 中。问题是获取的最后一行更改或复制了字典中所有先前的值。我以前使用过列表,但同样的事情正在发生。 下面是我的代码。
public Dictionary<string,Models.Attendance> NumberofDaysPresent(string userid, int month, int year, System.DateTime firstday, System.DateTime lastday)
{
firstday.ToString("yyyy/MM/dd").Trim().Replace("-", "/");
lastday.ToString("yyyy/MM/dd").Trim().Replace("-", "/");
SqlConnection conn;
conn = Database.getInstance();
conn.Open();
Dictionary<string,Models.Attendance> lst = new Dictionary<string,Models.Attendance>();
Models.Attendance att = new Models.Attendance();
string query = "Select * from dbo.[Attendence] where UserId = @uid " +
"AND CONVERT(VARCHAR(11),Date,111) >= @datefrom "+
"AND CONVERT(VARCHAR(11),Date,111) <= @dateto Order by Date ASC";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@uid", userid);
//cmd.Parameters.AddWithValue("@month", month);
//cmd.Parameters.AddWithValue("@year", year);
cmd.Parameters.AddWithValue("@datefrom", firstday);
cmd.Parameters.AddWithValue("@dateto", lastday);
reader = cmd.ExecuteReader();
while(reader.Read())
{
//if(reader["Status"].ToString() == "Full Day" || reader["Status"].ToString() == "Half Day" || reader["Status"].ToString() == "Late")
//{
att.strId = Guid.NewGuid().ToString();
att.cEmployee = new User();
att.cEmployee.StrUserID = reader["UserId"].ToString();
att.strStatus = reader["Status"].ToString();
att.tCheckIn = (TimeSpan)reader["CheckIn"];
att.tCheckOut = (TimeSpan)reader["Checkout"];
att.dtAttendanceDate = Convert.ToDateTime(reader["Date"]);
lst.Add(att.strId,att);
// }
}
}
【问题讨论】:
-
为什么要将数据存储在字典中?只是好奇..为什么不获取数据并将其存储在 DataTable 中..
-
这是因为我的考勤记录包含全天、半天和缺勤等多种状态。所以我需要单独提取这些天来进一步过滤记录。
标签: c# asp.net dictionary