Приведите IEnumerable <Class>к списку <string> - PullRequest
2 голосов
/ 05 апреля 2019

У меня есть 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 ]

1 голос
/ 05 апреля 2019

Есть ли способ преобразовать 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 формат .

0 голосов
/ 05 апреля 2019

Как насчет этого:

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

Вы правы, этот последний не будет.Я удалил это.

...