我有一个IEnumerable,我想将其转换为IEnumerable。请问我做错了什么?
实际问题出现在我尝试遍历返回的IEnumerable时。我收到了InvalidCastException异常。我在调试器中看到字符串={System.Linq.Enumerable.WhereSelectEnumerableIterator}。
实际问题出现在我尝试遍历返回的IEnumerable时。我收到了InvalidCastException异常。我在调试器中看到字符串={System.Linq.Enumerable.WhereSelectEnumerableIterator}。
private IEnumerable<string> ConvertToString(IEnumerable<double> doubles)
{
IEnumerable<string> strings = null;
if (doubles != null)
strings = doubles.Select(d => ConvertToString(d));
return strings;
}
private string ConvertToString(double d)
{
return string.Format("{0:0.00}", d);
}
好的,我解决了我的问题。这个Linq延迟执行使得调试变得棘手。实际上,我上游有一个调用导致了问题。
ICollection<float> floats; //pretend it holds valid data
ConvertToString(floats.Cast<double>()) //<---This is naughty
d
是值类型,所以它不能为null;而且你已经检查了doubles
是否为null,因此它也不能为null。你可以添加一个短小但完整的程序来演示这个问题吗? - dtb