C# join语句中的子列表-LINQ

C# join语句中的子列表-LINQ,c#,list,linq,C#,List,Linq,我有3个系列 List<Brand> brands= new List<Brand> { new Brand { ID = 5, Name = "Toyota"}, new Brand { ID = 6, Name = "Mazda"}, new Brand { ID = 7, Name = "Seat"} }; ModelParam par1 = new ModelParam() { Id = 1, fuelType = "Petrol",

我有3个系列

List<Brand> brands= new List<Brand>
{
    new Brand { ID = 5, Name = "Toyota"},
    new Brand { ID = 6, Name = "Mazda"},
    new Brand { ID = 7, Name = "Seat"}
};


ModelParam par1 = new ModelParam() { Id = 1, fuelType = "Petrol", enginePower =110, engineTorque = 130 };
ModelParam par2 = new ModelParam() { Id = 2, fuelType = "Petrol", enginePower = 170, engineTorque = 290 };
ModelParam par3 = new ModelParam() { Id = 3, fuelType = "Diesel", enginePower = 140, engineTorque = 280 };
ModelParam par4 = new ModelParam() { Id = 4, fuelType = "Diesel", enginePower = 190, engineTorque = 320 };

List<Model> models = new List<Model>
{
    new Model { Id = 1, Name = "CX5", brandId = 6, parameters = new List<ModelParam> {par1, par3} },
    new Model { Id = 2, Name = "Corolla", brandId = 5, parameters = new List<ModelParam> {par2, par3} },
    new Model { Id = 3, Name = "Leon", brandId = 7, parameters = new List<ModelParam> {par2, par4} }
};

问题是我无法从模型列表中的参数属性中提取
fuelType
enginePower
。有什么提示吗?

您应该稍微更新一下结果选择器
Func
,并从
模型
类中的
参数
集合中获取所需的
fuelType
enginePower
。以下代码段将仅从parameters和max
enginePower
中选择第一个
fuelType

var结果=模型
.Join(品牌,mod=>mod.brandId,b=>b.ID,
(mod,b)=>新
{
品牌=b.名称,
型号=型号名称,
FuelType=mod.parameters.Select(p=>p.FuelType).FirstOrDefault(),
EnginePower=mod.parameters.Max(p=>p.EnginePower)
})
.ToList();
但是,在这种情况下,
fuelType
enginePower
可以有多个值

如果需要选择所有组合,只需查看
参数
集合,然后使用

var结果=模型
.Join(品牌,mod=>mod.brandId,b=>b.ID,
(mod,b)=>mod.parameters.选择(p=>new
{
品牌=b.名称,
型号=型号名称,
燃料类型=p.FuelType,
发动机功率=p.发动机功率
}))
.SelectMany(\u=>\ ux)
.ToList();

这种方法对您有效吗

var result=models.Join(
品牌,
mod=>mod.brandId,
b=>b.ID,
(mod,b)=>mod.parameters.Select(parameter=>new{
品牌=b.名称,
型号=型号名称,
FuelType=参数。FuelType,
EnginePower=参数。EnginePower
}))
.SelectMany(pr=>pr)
.ToList();

到目前为止您尝试了什么?
params
不是有效的变量名,请共享您的实际代码<代码>参考标记a
属性也是missing@Fourat当创建新类型时,我做了一些类似于
new{b.Name,mod.Name,pow=mod.parameters.Select(x=>x.enginePower)}
-它没有返回值,而是返回类型property@PavelAnikhouski哎呀,我的错,编辑好了。很好,但我想得到所有的组合,不仅仅是第一个,例如:马自达CX5-110、马自达CX5-140是的!这正是我想要的。
var result = models.Join(brands, 
    mod => mod.brandId, 
    b => b.ID, 
    (mod, b) => new { b.Name, mod.Name })
.ToList();