无法将类型system.collections.generic.IEnumerable <string>隐式转换为string []

时间:2019-04-24 07:42:14

标签: c# .net xamarin

试图解决并解决以下错误

public String[] Any()
{                            
    var lastSixMonths = Enumerable.Range(0, 6).Select(i => DateTime.Now.AddMonths(i - 6)).Select(date => date.ToString("MM/yyyy"));

    return lastSixMonths;
}

5 个答案:

答案 0 :(得分:4)

由于lastSixMonthsIEnumerable<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还是多个元素(例如ToListToArrayToDictionary等)决定要检索什么。< / 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