C# 对缺少强制转换的列表进行排序时出错

C# 对缺少强制转换的列表进行排序时出错,c#,C#,我有一个列表,我正试图按日期时间排序并返回它。但我有一个错误。我该如何修复它 无法隐式转换类型 System.Linq.IOrderedEnumerableto System.Collections.Generic.List。一 存在显式转换(是否缺少强制转换?) 公共静态列表getdtnbar(字符串符号,日期时间dt) { TextReader tr=新的StreamReader(File.Open(@“C:\historicaldata\”+symbol+“.txt”,FileMode.O

我有一个列表,我正试图按日期时间排序并返回它。但我有一个错误。我该如何修复它

无法隐式转换类型
System.Linq.IOrderedEnumerable
to
System.Collections.Generic.List
。一 存在显式转换(是否缺少强制转换?)

公共静态列表getdtnbar(字符串符号,日期时间dt)
{
TextReader tr=新的StreamReader(File.Open(@“C:\historicaldata\”+symbol+“.txt”,FileMode.Open));
List dtnbars=新列表();
CsvReader csvr=新CsvReader(tr);
while(csvr.Read())
{
DTNBars b=新的DTNBars();
b、 日期\时间=csvr.GetField(0);
b、 Open=csvr.GetField(1);
b、 高=csvr.GetField(2);
b、 Close=csvr.GetField(4);
b、 股票代码=符号;
添加(b);
}
返回dtnbars.OrderBy(x=>x.Date\u Time);
}
公共类DTNBAR
{
公共日期时间日期\时间{get;set;}
公共双开{get;set;}
公共双高{get;set;}
公共双低位{get;set;}
公共双关闭{get;set;}
公共字符串标记器{get;set;}
}
使用ToList()


您的方法声明返回类型为
List
,但您返回的是
iorderenumerable
——这是
OrderBy
的结果。添加
ToList()

或者最好将返回类型更改为
IEnumerable


您还可以重构新的
DTNBars
的初始化,并使用对象初始值设定项:

dtnbars.Add( new DTNBars {
    Date_Time = csvr.GetField<DateTime>(0),
    Open = csvr.GetField<double>(1),
    High = csvr.GetField<double>(2),
    Close = csvr.GetField<double>(4),
    Ticker = symbol });
dtnbars.Add(新的dtnbars){
日期时间=csvr.GetField(0),
打开=csvr.GetField(1),
高=csvr.GetField(2),
关闭=csvr.GetField(4),
Ticker=symbol});

我想你所需要的就是在
订单人
之后添加一个
收费表
 return dtnbars.OrderBy(x => x.Date_Time).ToList();
return dtnbars.OrderBy(x => x.Date_Time).ToList();
dtnbars.Add( new DTNBars {
    Date_Time = csvr.GetField<DateTime>(0),
    Open = csvr.GetField<double>(1),
    High = csvr.GetField<double>(2),
    Close = csvr.GetField<double>(4),
    Ticker = symbol });