2017-07-26 32 views
-1

私はdatetimeでソートしようとしているリストを持っています。しかし、私はエラーが発生します。私はこれをどのように修正しますか?リストのソートにエラーがあり、キャストがありません

は、暗黙的に System.Linq.IOrderedEnumerable<ConsoleApplication2.DTNBars> System.Collections.Generic.List<ConsoleApplication2.DTNBars>にタイプ変換できません。 明示的な変換は(?あなたはキャストが欠落している)が存在する

public static List<DTNBars> getDTNBars(string symbol, DateTime dt) 
{ 
    TextReader tr = new StreamReader(File.Open(@"C:\historicaldata\" + symbol + ".txt", FileMode.Open)); 
    List<DTNBars> dtnbars = new List<DTNBars>(); 

    CsvReader csvr = new CsvReader(tr); 
    while (csvr.Read()) 
    { 
     DTNBars b = new DTNBars(); 
     b.Date_Time = csvr.GetField<DateTime>(0); 
     b.Open = csvr.GetField<double>(1); 
     b.High = csvr.GetField<double>(2); 
     b.Close = csvr.GetField<double>(4); 
     b.Ticker = symbol; 

     dtnbars.Add(b); 
    } 
    return dtnbars.OrderBy(x => x.Date_Time); 
} 

public class DTNBars  
{ 
    public DateTime Date_Time { get; set; }  
    public double Open { get; set; } 
    public double High { get; set; } 
    public double Low { get; set; } 
    public double Close { get; set; } 
    public string Ticker { get; set; } 
} 
+0

を私は思います'OrderBy'の後に' ToList'を追加するだけです。 – juharr

答えて

2

利用ToListメソッド()

return dtnbars.OrderBy(x => x.Date_Time).ToList(); 
2

あなたの方法はList<DTNBars>の戻り値の型を述べていますが、IOrderedEnumerable<DTNBars>戻ってきている - ですOrderByの結果ToList()を追加します。

return dtnbars.OrderBy(x => x.Date_Time).ToList(); 

それとも、より良いだけでIEnumerable<DTNBars>


に戻り値の型を変更する。また、新しい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 }); 
関連する問題