Linq/lambda有关.Select的问题(Newby Learning 3.0)

标签 linq c#-3.0 lambda

我正在玩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/

相关文章:

java - map 流到 map

c# - 调试时,我可以在 LINQ 中查看导致异常的对象吗?

linq - 无法找到包 '2.0.21' 的版本 'LinqToFacebook'

C#:如何检查列表的大小和元素是否相同?

c# - 如果我重写 ToString,是否还需要重写 Equals 和 GetHashCode?

c# - 如何计算字典中不包括第一项值的所有值的总和?

c# - 使用表达式 <Func<>> 和 <T> 的 Where 子句

c# - 有没有办法强制转换函数

javascript - Node lambda - 类型错误 : handler is not a function

c# - 获取 lambda 表达式的 MethodInfo