Ehs*_*bar 0 c# string ienumerable
我有一个期望的方法,IEnumerable<string>
你可以在这里看到:
public static string FromDecimalAscii(IEnumerable<string> input)
{
return new string(input.Select(s => (char)int.Parse(s)).ToArray());
}
Run Code Online (Sandbox Code Playgroud)
但每次我的IEnumerable的最后一条记录都是空的,所以我在这一行得到一个错误,因为:
return new string(input.Select(s => (char)int.Parse(s)).ToArray());
Run Code Online (Sandbox Code Playgroud)
所以我必须从我的IEnumerable
.删除该项目.
错误:Input string was not in a correct format
任何想法将不胜感激.
最好的祝福
小智 6
您只需要过滤集合Where
:
return new string(input.Where(s => !string.IsNullOrEmpty(s))
.Select(s => (char)int.Parse(s)).ToArray());
Run Code Online (Sandbox Code Playgroud)
您还可以使用扩展方法来使用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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
var collection = input.WhereParsed<string, int>(int.TryParse)
.Cast<char>()
.ToArray();
return new string(collection);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
474 次 |
最近记录: |