lambda表达式从列表中获取项目

时间:2017-09-21 11:25:15

标签: c#

我做了一个小应用程序来练习lambda表达式。我是新手使用这种技术,我想熟悉在我的日常编码中使用它们,因为我意识到它们有多么强大。

我创建了一个名为Pet的班级,每个宠物都有NameAge我已经为Pet班添加了4只宠物。

我希望使用WhereSelect条款获取年龄为1的宠物名称。但是,当我运行我的代码而不是返回宠物名称时,我得到System.Collections.Generic.List 1 [System.String]

我的代码如下

宠物类

   class Pet
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

计划类

        var pets = new Pet[]
        {
            new Pet {Name="Sharo", Age=8 },
            new Pet {Name="Rex", Age=4 },
            new Pet {Name="Strela", Age=1 },
            new Pet {Name="Bora",Age=1 }
        };

p = pets.Where(pet => pet.Age == 1).Select(pet => pet.Name).ToList();

Console.WriteLine(p);

2 个答案:

答案 0 :(得分:2)

Console.WriteLine(p)

隐含地调用对象ToString()的{​​{1}}方法,该方法默认返回类型名称。

改为使用

p

其余代码看起来完全正确。

注意:如果你想练习更多的lambdas,你可以使用linq'来获得字符串concat:

Console.WriteLine(String.Join(",", p));

答案 1 :(得分:0)

执行ToList后,您有List<String>

相反,你可以做

foreach(var pet in p)
    Console.WriteLine(p.Name)