无法将日期时间转换为字符串
本文关键字:转换 字符串 时间 日期 | 更新日期: 2023-09-27 17:58:50
我有一个包含一些日期的数据库,我想获取它们并将它们转换为字符串[]以在图中使用。
var Yaxis = db.Graphs
.Where(x => x.Node.Contains(Node))
.Select(x => x.Dates)
.ToArray();
var data = new string[Yaxis.Length];
for (int i = 0; i < Yaxis.Length ; i++)
{
data[i] = Yaxis[i].ToString;
}
ToString在这里不起作用,并出现"非委托类型"错误。我不知道有什么其他方法可以将数组解析为字符串[]。
知道吗?
data[i] = Yaxis[i].ToString();
如果不包括圆括号,编译器将假定您在谈论函数ToString
,而实际上您在谈论返回值。
当你谈论函数本身时,它被称为委托(有点类似于C/C++中的函数指针),它解释了你所得到的错误。
正如Antonijn所发布的,直接的问题是您使用ToString
而没有实际调用该方法。
然而,通过在LINQ:中进行操作,您可以做得更好
var data = db.Graphs
.Where(x => x.Node.Contains(Node))
.Select(x => x.Dates.ToString())
.ToArray();
注意,我们在这里的投影中调用ToString()
。如果没有得到您想要的结果(例如,因为它在数据库中执行转换),您可以将其拆分为两个Select
调用,其中一个AsEnumerable
调用强制第二个调用在本地执行:
var data = db.Graphs
.Where(x => x.Node.Contains(Node))
.Select(x => x.Dates)
.AsEnumerable()
.Select(x => x.ToString())
.ToArray();
当然,这将使用当前区域性中DateTime
的默认字符串表示。您可能需要考虑指定一个标准或自定义的日期/时间格式字符串来更改输出格式,甚至可以指定不同的区域性。。。这取决于你将如何处理这些数据。
所有这些都假设您不需要Yaxis
来执行任何其他操作。如果确实需要Yaxis
,您仍然可以使用LINQ来简化您的代码:
var data = Yaxis.Select(x => x.ToString()).ToArray();