从ienumerable <string> </string>中删除项目

时间:2014-09-23 06:20:22

标签: c# string ienumerable

我有一个期望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 任何想法将不胜感激。

祝你好运

1 个答案:

答案 0 :(得分: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);
相关问题