在经典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互操作的奇迹