我正在玩C#3.0的新东西,我有这段代码(大部分取自MSDN),但我只能得到true,false,true ...,而不是真实值:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var oddNumbers = numbers.Select(n => n % 2 == 1);
Console.WriteLine("Numbers < 5:");
foreach (var x in oddNumbers)
{
Console.WriteLine(x);
}
如何解决该问题以显示整数列表?
最佳答案
将您的“选择”更改为“位置”
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var oddNumbers = numbers.Where(n => n % 2 == 1);
Console.WriteLine("Odd Number:");
foreach (var x in oddNumbers)
{
Console.WriteLine(x);
}
“选择”方法正在为每个元素创建一个新的lambda结果列表(真/假)。 “Where”方法是基于lambda进行过滤的。
在C#中,您还可以使用以下语法,您可能会发现它更清晰:
var oddNumbers = from n in numbers
where n % 2 == 1
select n;
编译器将其翻译为:
var oddNumbers = numbers.Where(n => n % 2 == 1).Select(n => n);
关于Linq/lambda有关.Select的问题(Newby Learning 3.0),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/241967/