Tôi có một IEnumerable < đôi > Tôi muốn chuyển đổi sang một IEnumerable < chuỗi >. Vấn đề là mã dưới đây ném một ngoại lệ null đối số vào câu lệnh chọn. Tôi đang làm gì sai?LINQ: Chuyển đổi IEnumable <double> để IEnumable <string> sử dụng phương pháp helper
Vấn đề thực tế xảy ra khi tôi cố gắng để lặp qua các trở IEnumerable < chuỗi >. Tôi nhận được InvalidCastException. Tôi nhìn thấy trong debuger rằng chuỗi = {System.Linq.Enumerable.WhereSelectEnumerableIterator < đôi, chuỗi >}
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);
}
Được rồi, tôi giải quyết vấn đề của tôi. Điều này thực thi chậm trễ LINQ làm cho gỡ lỗi khôn lanh. Tôi thực sự có một cuộc gọi ngược dòng gây ra vấn đề.
ICollection<float> floats; //pretend it holds valid data
ConvertToString(floats.Cast<double>()) //<---This is naughty
Mã này như-là không nên ném bất kỳ ArgumentNullException. 'd' không thể là null, vì nó là một kiểu giá trị; và 'double' không thể rỗng, bởi vì bạn kiểm tra điều đó. Bạn có thể thêm một chương trình ngắn nhưng đầy đủ để chứng minh sự cố không? – dtb