将IEnumerable <class>强制转换为List <string>

时间:2019-04-05 18:22:00

标签: c# casting ienumerable

我有一个List<IOhlcv>,我需要从string[]获得DateTime个字符串中的List

public interface ITick
{
    DateTimeOffset DateTime { get; }
}

public interface IOhlcv : ITick
{
        decimal Open { get; set; }
        decimal High { get; set; }
        decimal Low { get; set; }
        decimal Close { get; set; }
        decimal Volume { get; set; }
}

//candles is a List<IOhlcv>
var candles = await importer.ImportAsync("FB");

这是怎么回事?:

string[] x = from p in candles
             orderby p.DateTime ascending
             select What goes here?

我也可以这样获得List中的Datetime

var sd = candles.Select(i => i.DateTime).ToList();

有没有一种方法可以在不循环的情况下转换List<DateTime> to a List<String>

我知道我可以做这样的事情,但是我正在努力避免循环:

List<string> dateTimeStringList = new List<string>();

foreach (var d in candles)
    dateTimeStringList.Add(d.DateTime.ToString());

 return dateTimeStringList ;

2 个答案:

答案 0 :(得分:1)

  

有没有一种方法可以将List<DateTime>转换为List<String>而无需   循环播放?

这是使用Linq Select的方法:

List<DateTime> list = new List<DateTime>();
list.Add(DateTime.Now);
var format = "yyyy MMMMM dd";
var stringList = list.Select(r => r.ToString(format)).ToList();

您可以将上面的format替换为您喜欢的DateTime format

答案 1 :(得分:0)

那呢:

string[] x = from p in candles
         orderby p.DateTime ascending
         select p.DateTime.ToString()

您是对的,最后一个不会。我删除了。