在经典ASP中对集合进行排序

时间:2020-03-06 14:57:47  来源:igfitidea点击:

这是一个非常简单的问题,我如何对集合进行排序?

我有一个CSV文件,其中的行以随机顺序排列。我想根据日期在一列中对行进行排序。是否将行添加到记录集?我可以用Scripting.Dictionary排序吗?

我显然已经对.NET和Linq宠爱不已,现在我发现自己回到了经典的ASP领域,意识到我必须在7年前就知道这一点,并且极大地丢失了泛型。我感觉像一个完整的n00b。

解决方案

对我来说也很久了。 IIRC我们没有开箱即用的选项。

如果我是我,我会将所有数据放入一个数组中,然后对该数组进行排序。我在这里找到了QuickSort实现:http://www.4guysfromrolla.com/webtech/012799-3.shtml

还要看一下"气泡排序",它与那些经典的asp标签云一起使用时效果很好。

http://www.4guysfromrolla.com/webtech/011001-1.shtml

我将使用RecordSet方法。使用文本驱动程序。我们需要在连接字符串中更改目录,并在select语句中更改文件名。扩展属性" HDR = Yes"指定CSV中有一个标题行,我建议这样做,因为这将使编写伪SQL变得容易。

<%

Dim strConnection, conn, rs, strSQL

strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\wwwroot\;Extended Properties='text;HDR=Yes;FMT=Delimited';"

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open strConnection

Set rs = Server.CreateObject("ADODB.recordset")
strSQL = "SELECT * FROM test.csv order by date desc"
rs.open strSQL, conn, 3,3

WHILE NOT rs.EOF
    Response.Write(rs("date") & "<br/>") 
    rs.MoveNext
WEND

rs.Close
Set rs = Nothing

conn.Close
Set conn = Nothing

%>

在这种情况下,我将从哥哥.net那里获得帮助。可以在ASP应用程序中使用System.Collections.Sortedlist并对键值对进行排序。

set list = server.createObject("System.Collections.Sortedlist")
with list
  .add "something", "YY"
  .add "something else", "XX"
end with

for i = 0 to list.count - 1
    response.write(list.getKey(i) & " = " & list.getByIndex(i))
next

顺便说一句,如果以下.net类也可用:

  • System.Collections.Queue
  • System.Collections.Stack
  • System.Collections.ArrayList
  • System.Collections.SortedList
  • System.Collections.Hashtable
  • System.IO.StringWriter
  • System.IO.MemoryStream;

另请参见:COM .NET互操作的奇迹