Linq 选择具有多个子项的不同父项
我想用LINQ将此列表选择到Linq 选择具有多个子项的不同父项,linq,Linq,我想用LINQ将此列表选择到列表中。我试过了,但没用: Car -> Red Car -> Blue Boat -> Brown Boat -> Yellow Boat -> Green Plane -> White var List=结果。选择(v=>新车 { 类型=v.类型; 颜色=新列表{new Color=v.Color} } 我确定我需要在这里使用某种群组,但我不确定如何使用。听起来应该通过GroupBy呼叫: var
列表中。我试过了,但没用:
Car -> Red
Car -> Blue
Boat -> Brown
Boat -> Yellow
Boat -> Green
Plane -> White
var List=结果。选择(v=>新车
{
类型=v.类型;
颜色=新列表{new Color=v.Color}
}
我确定我需要在这里使用某种群组,但我不确定如何使用。听起来应该通过GroupBy
呼叫:
var List<Vehicle> = results.Select(v => new Vehicle
{
Type = v.Type;
Colors = new List<Color> { new Color = v.Color }
}
results.GroupBy(r => r.Type)
.Select(g => new Vehicle {
Type = g.Key,
Colors = t.Select(p => p.Color).ToList()
})
.ToList()
请注意,GroupBy
的另一个重载将允许您跳过Select
调用,但我认为这样做更简单。如果您想要其他表单,请告诉我
请注意,如果在车辆
对象中确实不需要这些,可以使用查找
:
var query = input.GroupBy(x => x.Type, x => x.Color)
.Select(g => new Vehicle { Type = g.Key, Colors = g.ToList() })
.ToList();
如果您只需要查询的特定方法中的结果,那么这很方便,但是如果您将数据传播到其他地方,则创建一个列表将更有意义。这是按颜色分组的,组中的每个元素都是完整的结果。我想您想要更像我的答案的东西。对,这会起作用-虽然我认为如果你把每一个分组都变成一组颜色会更简单。我还强烈建议使用换行符和空格来增加可读性:)我编辑了这篇文章,我同意按两个字段分组的字母更少,但不会改变,因为这是我最初的答案
var query = input.GroupBy(x => x.Type, x => x.Color)
.Select(g => new Vehicle { Type = g.Key, Colors = g.ToList() })
.ToList();
var lookup = input.ToLookup(x => x.Type, x => x.Color);
foreach (var color in lookup["Car"])
{
// ...
}