ASP.NET相当于这个PHP代码(数组)?

时间:2011-02-13 17:07:46

标签: c# php asp.net

我主要是用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"]);
}
  1. 正如您所看到的那样,它是一个正在扩展的2D数组,但内部数组总是有两个参数。现在我在网上搜索过,还没有找到如何在ASP.NET(C#)中声明扩展数组。

  2. aspx中是否有替代strtotime?

2 个答案:

答案 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"]));
}

然后,您可以按索引访问列表中的项目,并将各个字段设置为Item1Item2

DateTime dt = Data[0].Item1;
string itemData = Data[0].Item2;