gpt4 book ai didi

c# - 如何在选择的 lambda 中省略一个值?

转载 作者:行者123 更新时间:2023-11-30 13:19:48 25 4
gpt4 key购买 nike

我想制作一个简单的 CSV 解析器。它应该遍历逗号分隔值列表并将它们放在 IList<int> 中。 .这些值应该是整数。如果一个值不可解析,我只想忽略它。

这是我目前的代码:

csv.Split(',').Select(item =>
{
int parsed;
if (int.TryParse(item, out parsed))
{
return parsed;
}
continue; //is not allowed here
}).ToList();

但是,使用continue这里(当然)是不允许的。 如何在我的选择实现中省略一个值?

注意:我当然可以使用 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;
}
}

然后:

var vals = csv.Split(',').ExtractInt32().ToList();

这里的好东西:

  • 避免神奇的“哨兵”数字(如 int.MinValue)
  • 避免单独和断开的“它是有效的”/“解析”步骤(因此没有重复)

关于c# - 如何在选择的 lambda 中省略一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com