从Linq中的另一个列表项创建列表

man*_*adt 1 .net c# linq ienumerable

我有一个自定义汽车对象的列表List<Car>.汽车类有两个属性'BrandName'和'Models',如下所述.

public class Car
{
     public string BrandName {get; set;}
     public List<string> Models {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

"List"对象的数据从API填充,如下所示.它返回接近200行.为了便于说明,该对象已经实例化了两个项目,如下所示.使用此结构从API返回对象,我无法控制数据的结构和发送方式.

List<Car> listCarObj = new List<Car>(){
    new Car(){ BrandName = "Mercedes", Models = new List<string>(){"Class A", "Class E"}},
    new Car(){ BrandName = "BMW", Models = new List<string>(){"X Series", "E Series"}}
} 
Run Code Online (Sandbox Code Playgroud)

如何使用Linq将此列表转换为IEnumerable或另一个具有以下格式数据的匿名类型列表?

var obj = new[] {new {brand = "Mercedes", model = "Class A"},
                 new {brand = "Mercedes", model = "Class E"},
                 new {brand = "BMW", model = "X Series"},
                 new {brand = "BMW", model = "E Series"}};
Run Code Online (Sandbox Code Playgroud)

提前致谢..

Zip*_*ppy 5

为什么不进行 linq 查询,在其中从列表中选择每个对象listCarObj,并且对于列表中的每个元素,获取所有模型并返回匿名类型?

就像是:

var obj = from p in listCarObj
          from q in p.Models
          select new {
            brand=p.BrandName,
            model = q
            };
Run Code Online (Sandbox Code Playgroud)


fub*_*ubo 5

这是SelectMany一个嵌套的方法Select

var result = listCarObj.SelectMany(x => x.Models.Select(y => new { model = y,brand = x.BrandName }));
Run Code Online (Sandbox Code Playgroud)