我主要是用PHP编程,但对于我的学校项目,我必须使用ASP.NET(C#)。现在我有这个代码在PHP中工作:
$Data = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$date = strtotime($row["Date"])*1000;
$Data[] = array($date, $row["Data"]);
}
正如您所看到的那样,它是一个正在扩展的2D数组,但内部数组总是有两个参数。现在我在网上搜索过,还没有找到如何在ASP.NET(C#)中声明扩展数组。
aspx中是否有替代strtotime?
答案 0 :(得分:4)
鉴于它现在是C#和数据类型should come across through the reader,以下内容应该有效:
// use a struct to store your retrieved information
public struct Details
{
DateTime date;
Object data;
public Details(DateTime Date, Object Data)
{
date = Date;
data = Data;
}
}
// use List<T> to define a dynamically-sized list
List<Details> dataArray = new List<Details>();
while (reader.Read()) // query the database
{
// add the information to the list as we iterate over it
dataArray.Add(new Details(reader.GetDateTime("Date"),reader["Data"]));
}
// your new expansive array: dataArray.ToArray();
// converting an object to datetime: Convert.ToDateTime();
这也假设您正在使用SqlDataReader(尽管您几乎可以使用任何东西从SQL中检索信息)。
鉴于以下评论,将从数据库中检索信息,然后输出到JSON。由于新的要求,我将稍微更改商店格式。这样可以灵活地继续使用JavaScriptSerializer,同时输出到javascript可以理解的格式。
// make a list we can use
List<Object[]> details = new List<Object[]>();
// populate the data
using (SqlConnection connection = new SqlConnection("<connection string>"))
{
SqlCommand command = new SqlCommand("<query string>");
SqlReader reader = command.ExecuteReader();
.. go through the database
while (reader.Read())
{
DateTime date = reader.GetDateTime("Date");
Double data = reader.GetDouble("Data");
// convert the datetime to unix time
// http://www.epochconverter.com/
var epoc = (date.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
details.Add(new Object[]{ epoc, data });
}
}
// Now we serialize
JavaScriptSerializer serializer = new JavaScriptSerializer();
String result = serializer.Serialize(details.ToArray());
以下是我从result
收到的内容(无论格式如何):
[
[1297627668,0.7],
[1297714068,1.1],
[1297800468,0.1],
...
]
答案 1 :(得分:3)
首先,您是如何从SQL数据库获取数据的?我假设您将其作为DataRow
个对象的集合。
为了存储数据,我建议使用元组列表,如下所示。
List<Tuple<DateTime, string>> Data = new List<Tuple<DateTime, string>>();
// Somehow get a collection of rows into a results object
foreach (DataRow row in results)
{
DateTime dt = DateTime.Parse(row["Date"]);
Data.Add(new Tuple<DateTime, string>(dt, row["Data"]));
}
然后,您可以按索引访问列表中的项目,并将各个字段设置为Item1
和Item2
:
DateTime dt = Data[0].Item1;
string itemData = Data[0].Item2;