【发布时间】:2016-12-29 05:29:10
【问题描述】:
没有输入和输出很难解释这一点。我做了一个简单的汽车示例,以避免我的项目中不必要的细节。
我有这个清单:
List<car> cars = new List<car>()
{
new car() { carname = "bmw", carwheels = new List<int>() { 1, 2, 3, 4 } },
new car() { carname = "cadillac", carwheels = new List<int>() { 1, 2, 3, 4 } },
new car() { carname = "mustang", carwheels = new List<int>() { 1, 2, 3, 4 } }
};
我想用扩展类输出这个:
{
{ carname = "bmw", carwheel = 1 },
{ carname = "bmw", carwheel = 2 },
{ carname = "bmw", carwheel = 3 },
{ carname = "bmw", carwheel = 4 },
{ carname = "cadillac", carwheel = 1 },
{ carname = "cadillac", carwheel = 2 },
{ carname = "cadillac", carwheel = 3 },
{ carname = "cadillac", carwheel = 4 },
{ carname = "mustang", carwheel = 1 },
{ carname = "mustang", carwheel = 2 },
{ carname = "mustang", carwheel = 3 },
{ carname = "mustang", carwheel = 4 }
}
有没有办法通过 IEnumerable 扩展方法进行投影?与 SelectMany() 相反的东西。
【问题讨论】:
-
为什么相反,这不正是
SelectMany所做的吗? -
@TimSchmelter -- 据我了解,
SelectMany()会占据最后的列表并将其压平为单曲,每个单曲都有一个车轮列表。我应该学习 SelectMany() 的另一个重载吗? -
这不是
SelectMany的反面,这是SelectMany。 -
为了完整起见,
SelectMany的“相反”是GroupBy。在这种情况下,您可以GroupBycarname的结果,然后为每个组创建一个car的实例以获取您的原始列表。 -
@TimSchmelter -- 我明白你的意思。是的,我想我用这个问题的标题误导了所有人。我想我已经看代码太久了:).Rene 的答案正是我所需要的。谢谢!
标签: c# enumerable