C# Cast IEnumerable<;类别>;列出<;字符串>;

C# Cast IEnumerable<;类别>;列出<;字符串>;,c#,casting,ienumerable,C#,Casting,Ienumerable,我有一个列表,我需要从列表中获取日期时间字符串的字符串[]: public interface ITick { DateTimeOffset DateTime { get; } } public interface IOhlcv : ITick { decimal Open { get; set; } decimal High { get; set; } decimal Low { get; set; } decimal

我有一个
列表
,我需要从
列表
中获取
日期时间
字符串的
字符串[]

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");
我还可以得到
日期时间的
列表,如下所示:

var sd = candles.Select(i => i.DateTime).ToList();
有没有办法将
列表转换为不循环的列表

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

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

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

 return dateTimeStringList ;
List dateTimeStringList=new List();
foreach(以烛光表示的变量d)
Add(d.DateTime.ToString());
返回日期时间字符串;
这个怎么办:

string[] x = from p in candles
         orderby p.DateTime ascending
         select p.DateTime.ToString()
你说得对,最后一个不会。我把它拿走了

有没有办法将
列表
转换为
列表
而不使用 循环

以下是您可以使用的方法:

List List=新列表();
添加(DateTime.Now);
var format=“yyyy-mmmm-dd”;
var stringList=list.Select(r=>r.ToString(format)).ToList();

您可以将上面的
格式
替换为您最喜欢的格式。

ToList
基本上可以looping@tukaef是的,它可以在引擎盖下进行,但不在我的代码中。是的,对不起,我认为OP关心的是性能,而不是代码。没有循环就无法将一个列表转换为另一个列表。为了避免不必要的循环,您可以将其转换为
IEnumerable
。然后,您的代码应该接受
IEnumerable
,而不是
List
。本文可能有助于:
string[] x = from p in candles
         orderby p.DateTime ascending
         select p.DateTime.ToString()
List<DateTime> list = new List<DateTime>();
list.Add(DateTime.Now);
var format = "yyyy MMMMM dd";
var stringList = list.Select(r => r.ToString(format)).ToList();