2014-09-23 87 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

相关问题