当前位置:  开发笔记 > 编程语言 > 正文

关于Linq/lambda的问题.选择(newby learn 3.0)

如何解决《关于Linq/lambda的问题.选择(newbylearn3.0)》经验,为你挑选了2个好方法。

我正在玩C#3.0的新东西,我有这个代码(大部分来自MSDN),但我只能得到真,假,真......而不是真正的价值:

        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);
        }

如何修复它以显示整数列表?



1> TheSoftwareJ..:

将"选择"更改为"位置"

    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);
    }

"Select"方法为每个元素创建一个新的lambda结果列表(true/false)."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);



2> Orion Edward..:
numbers.Select(n => n % 2 == 1);

将此更改为

numbers.Where(n => n % 2 == 1);

什么选择是"转换"一件事到另一件事.所以在这种情况下,它是"转换"n到"n%2 == 1"(这是一个布尔值) - 因此你得到所有的真实和谬误.

它通常用于获取物品的属性.例如,如果你有一个Person对象列表,并且想要得到它们的名字,你就可以了

var listOfNames = listOfPeople.Select( p => p.Name );

你可以这样想:

使用以下方法将人员列表转换为字符串列表:(p => p.Name)

要"选择"(在单词的"过滤"意义上)集合的子集,您需要使用Where.

感谢微软的糟糕命名

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有