gpt4 book ai didi

c# - 如何按日期升序对 DataTable 进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:34 25 4
gpt4 key购买 nike

我的 C# 代码将股票报价下载到 DataTable 对象中。数据以降序日期的形式出现在第一列中。我想将此表按升序日期排序。我尝试了以下方法:

table.DefaultView.Sort = "Date";

将表排序为字符串类型,例如:“1/1/1994”、“1/1/1995”、“1/1/1996”而不是所需的“1/1/1994” , "1/2/1994", "1/3/1994".

现在,以下引发 InvalidCastException。

var newTable = table.AsEnumerable().OrderBy(r => r.Field<DateTime>("Date")).CopyToDataTable();

注意:这种排序发生在返回 DataTable 对象的方法中。

[更新]这就是我从列表中创建和填充表格的方式,其中每个条目的格式如下:“1/1/1994,21.01,22,21,21.01,23131,21.01”

        List<string> list = Downloaders.DownloadContentToList(symbol);

DataTable table = new DataTable(symbol);
table.Columns.Add("Date");
table.Columns.Add("Open");
table.Columns.Add("High");
table.Columns.Add("Low");
table.Columns.Add("Close");
table.Columns.Add("Volume");
table.Columns.Add("Adj Close");

for (int i = 0; i < list.Count; i++)
{
string[] cols = list[i].Split(',');

DateTime date = Convert.ToDateTime(cols[0]);
double open = Convert.ToDouble(cols[1]);
double high = Convert.ToDouble(cols[2]);
double low = Convert.ToDouble(cols[3]);
double close = Convert.ToDouble(cols[4]);
double volume = Convert.ToDouble(cols[5]);
double adjClose = Convert.ToDouble(cols[6]);
table.Rows.Add(date, open, high, low, close, volume, adjClose);
}

最佳答案

创建表格时,您应该添加“日期”列:

table.Columns.Add("Date", typeof(DateTime));

然后:

table.DefaultView.Sort = "Date desc";

关于c# - 如何按日期升序对 DataTable 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com