linq - 选择和选择很多不同

标签 linq

我已经阅读了许多关于 select 和 select many in LINQ 的站点/线程,但仍然不太明白。

select 是否返回集合中的一个元素并选择多个扁平化集合(例如 List>())?

谢谢

最佳答案

这是一个示例。希望它澄清一切:

static void MethodRun()
{
    List<Topping> testToppings = new List<Topping> { Topping.Cheese, Topping.Pepperoni, Topping.Sausage };

    var firstLetterofToppings = testToppings.Select(top => top.ToString().First());

    // returns "C, P, S"

    var singleToppingPizzas = testToppings.Select(top => new Pizza(top)).ToArray();

    // returns "Pizza(Cheese), Pizza(Pepperoni), Pizza(Sausage)"

    List<Topping> firstPizza = new List<Topping> { Topping.Cheese, Topping.Anchovies };
    List<Topping> secondPizza = new List<Topping> { Topping.Sausage, Topping.CanadianBacon, Topping.Pepperoni };
    List<Topping> thirdPizza = new List<Topping> { Topping.Ham, Topping.Pepperoni };

    List<IEnumerable<Topping>> toppingsPurchaseOrder = new List<IEnumerable<Topping>> { firstPizza, secondPizza, thirdPizza };

    var toppingsToOrder = toppingsPurchaseOrder.SelectMany(order => order);

    //returns "Cheese, Anchovies, Sausage, CanadianBacon, Pepperoni, Ham, Pepperoni"

}

class Pizza
{
    public List<Topping> Toppings { get; private set; }
    public Pizza(Topping topping) : this(new List<Topping> { topping }) { }
    public Pizza(IEnumerable<Topping> toppings)
    {
        this.Toppings = new List<Topping>();
        this.Toppings.AddRange(toppings);
    }
}

enum Topping
{
    Cheese,
    Pepperoni,
    Anchovies,
    Sausage,
    Ham,
    CanadianBacon
}

关键是 Select() 可以选择任何类型的对象。确实,您可以选择分配给集合的任何通用值的属性,但您也可以选择任何其他类型的对象。 SelectMany() 只是扁平化你的列表。

关于linq - 选择和选择很多不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425571/

相关文章:

c# - 使用 AutoMapper 的 LINQ GroupBy 聚合

c# - 使用 Linq 加载数据表 - 将 C# 转换为 VB.Net

c# - 如何使用 GroupBy 和 LEFT JOIN 进行 LINQ 查询

c# - GroupJoin、SelectMany、GroupBy 和 Sum

linq - LINQ skip & take 是否有不错的性能?

c# - 使用 var 匿名对象为 LINQ 获取 InvalidCastException

c# - 搜索列表比使用 foreach 更好的方法

c# - Linq 使用稍微复杂的选择列表

c# - Linq 查询在编译时不起作用

c# - Linq - 在一个查询中计算多个平均值