2014-09-23 124 views
0

刪除的項目我有一個希望IEnumerable<string>,你可以在這裏看到一個方法:自IEnumerable <string>

public static string FromDecimalAscii(IEnumerable<string> input) 
     { 

      return new string(input.Select(s => (char)int.Parse(s)).ToArray()); 
     } 

但每次我的IEnumerable的最後一個記錄是空的時間,所以我在此行得到了一個錯誤,因爲即:

return new string(input.Select(s => (char)int.Parse(s)).ToArray()); 

所以我必須從我的IEnumerable刪除該項目。

錯誤:Input string was not in a correct format 任何想法將不勝感激。

問候

+0

究竟是什麼_error_? – 2014-09-23 06:21:01

+0

輸入字符串格式不正確。 – 2014-09-23 06:21:33

+0

我說親愛的朋友,因爲我的最後一個項目是空字符串 – 2014-09-23 06:22:05

回答

6

你只需要與Where過濾收集:

return new string(input.Where(s => !string.IsNullOrEmpty(s)) 
         .Select(s => (char)int.Parse(s)).ToArray()); 

您還可以使用擴展方法來使用TryParse

static class Extensions 
{ 
    public delegate bool TryParseDelegate<TSource>(string s, out TSource source); 

    public static IEnumerable<TResult> WhereParsed<TSource, TResult>(
               this IEnumerable<TSource> source, 
               TryParseDelegate<TResult> tryParse) 
    { 

     // TODO: check arguments against null first 

     foreach (var item in source) 
     { 
      TResult result; 
      if (tryParse(item != null ? item.ToString() : null, out result)) 
      { 
       yield return result; 
      } 
     } 
    } 
} 

用法:

var collection = input.WhereParsed<string, int>(int.TryParse) 
         .Cast<char>() 
         .ToArray(); 
return new string(collection); 
+0

好主意。謝謝它的作品。 – 2014-09-23 06:24:42

相關問題