在array.convertall()中使用lambda表达式

问题描述 投票:0回答:1

我仍然熟悉委托和lambda,我没有使用LINQ,而且今天我也只发现了convertall函数,所以我正在尝试并要求它增强我的理解。

我要做的任务是确定一串数字是偶数还是奇数。因此,首先,将字符串列表转换为int列表,然后从那里转换为bool列表。就像代码那样肿,我想知道是否可以将所有内容都放在一行上,并减少对额外的for循环的需求。

string numbers = "2 4 7 8 10";

List<bool> evenBools = new List<bool>(Array.ConvertAll(numbers.Split(' '), (x = Convert.Int32) => x % 2 == 0))

预期结果为[true,true,false,true,true]。显然,该代码无法正常工作。

我知道Array.ConvertAll的第二个参数要求进行对话。从字符串到整数,仅是Convert.ToInt32。是否有可能即时执行此操作(即,在lambda表达式的左侧),以便我可以继续进行bool转换并在右侧返回?

c# lambda delegates
1个回答
0
投票

您应该写类似的东西

var boolArray = Array.ConvertAll(numbers.Split(' '), input => Convert.ToInt32(input) % 2 == 0);
List<bool> evenBools = new List<bool>(boolArray);
© www.soinside.com 2019 - 2024. All rights reserved.