Mar*_*cel 3 c# linq lambda select
我想制作一个简单的CSV解析器.它应该通过逗号分隔值列表并将它们放在一个IList<int>
.这些值应该是整数.如果值不可解析,我只想省略它.
这是我到目前为止的代码:
csv.Split(',').Select(item =>
{
int parsed;
if (int.TryParse(item, out parsed))
{
return parsed;
}
continue; //is not allowed here
}).ToList();
Run Code Online (Sandbox Code Playgroud)
但是,continue
这里不允许使用(当然).如何在我的select实现中省略一个值?
注意:当然可以使用foreach或LINQ表达式,但我想知道如何使用lambda.
怎么样:
public static IEnumerable<int> ExtractInt32(this IEnumerable<string> values) {
foreach(var s in values) {
int i;
if(int.TryParse(s, out i)) yield return i;
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
var vals = csv.Split(',').ExtractInt32().ToList();
Run Code Online (Sandbox Code Playgroud)
这里的好东西:
int.MinValue
) 归档时间: |
|
查看次数: |
1874 次 |
最近记录: |