试图解决并解决以下错误
public String[] Any()
{
var lastSixMonths = Enumerable.Range(0, 6).Select(i => DateTime.Now.AddMonths(i - 6)).Select(date => date.ToString("MM/yyyy"));
return lastSixMonths;
}
答案 0 :(得分:4)
由于lastSixMonths
是IEnumerable<string>
,并且您期望使用数组,请尝试以下操作:
return lastSixMonths.ToArray();
我还创建了.NET Fiddle,以说明如何打印string[]
答案 1 :(得分:1)
这种方式:
public String[] Any()
{
return Enumerable.Range(0, 6).Select(i => DateTime.Now.AddMonths(i - 6)).Select(date => date.ToString("MM/yyyy")).ToArray();
}
为什么不起作用?
Linq的Select
返回一个IEnumerable
,其中包含过滤,排序等说明。
由单个元素FirstOrDefault
还是多个元素(例如ToList
,ToArray
,ToDictionary
等)决定要检索什么。< / p>
答案 2 :(得分:1)
您的问题:您的VersionInfoDescription
调用does return an IEnumerable必须将其显式转换为数组。
一项改进:您无需一个接一个地拨打两个.Select()
电话,您只需要打一个电话即可。
.Select()
答案 3 :(得分:0)
这应该做到:
public String[] Any()
{
IEnumerable<String> lastSixMonths = Enumerable.Range(0, 6).Select(i => DateTime.Now.AddMonths(i - 6)).Select(date => date.ToString("MM/yyyy"));
return lastSixMonths.ToArray();
}
答案 4 :(得分:0)
public String[] Any()
{
return Enumerable.Range(0, 6).Select(i => DateTime.Now.AddMonths(i - 6)).Select(date => date.ToString("MM/yyyy")).ToArray();
}
需要了解的内容
理解需求,使用LINQ从数据库中获取6个月的数据将为我们提供数据集合或多行数据。因此,如果我们希望通过给出条件并使用 .FirstorDefault 来限制它,或者如果我们需要数组或列表格式,则可以使用 .ToList 或。 ToArray 。