C# 如何使用lambda从具有集合的类中获取所有记录
如何从以下场景中使用lambda获取对象的新列表: 示例类: AllCARS是一个集合: 公车 { int id{get;set;} 列出汽车{get;set;} } 我尝试了以下操作,但没有生成所有行:C# 如何使用lambda从具有集合的类中获取所有记录,c#,lambda,C#,Lambda,如何从以下场景中使用lambda获取对象的新列表: 示例类: AllCARS是一个集合: 公车 { int id{get;set;} 列出汽车{get;set;} } 我尝试了以下操作,但没有生成所有行: var carRepo = new AllCars{}; var carsWithIds = carRepo.select(a => new {a.id, a.cars.color, a.cars.model}) 以下是我的表格示例: AllCars = id:123 cars[]
var carRepo = new AllCars{};
var carsWithIds = carRepo.select(a => new {a.id, a.cars.color, a.cars.model})
以下是我的表格示例:
AllCars = id:123
cars[]
color model
red honda
blue toyota
如何编写lambda函数来生成这样的列表
123红色本田
123 blue toyota如果我正确理解了问题,则无法对具有集合的对象执行linq请求。但是,您可以查询此对象内的集合以生成所需的输出。希望以下代码片段能有所帮助:
var carsWithIds = carRepo.cars.Select(a => new {id = carRepo.id, a.color, a.model });
此代码允许您获取匿名类的新对象,该对象包含以下字段:id、color和model
您的代码示例中有一点不准确。不要忘记公开所有汽车和汽车类别的属性;否则它们将无法访问。让
AllCarsList
成为AllCars
的集合,然后您可以使用扩展方法。选择many
以获取结果集合。请仔细阅读下面的代码行和示例,并请让我知道它是否有帮助,以及更多的澄清
var resltCollection = AllCarsList.SelectMany(p => p.cars,(parent, child) => new
{
ID = parent.id,
Color = child.color,
Model = child.model
}).ToList();
这是一个正在运行的
我尝试了以下没有生成所有行的操作:
输出是什么?我应该指出的一点是,Allcars是一个列表。。。。对于所有汽车的每一项记录,我都在努力输出所有的数据cars@user1526912如果这是你希望问的问题,你至少应该暗示一下。无论如何,如果您想要(交叉连接,对吗?),请尝试SelectMany
。我应该提到汽车有一个我希望在所有汽车上匹配的id属性。我应该提到汽车有一个我希望在所有汽车上匹配的id属性,我在您提供的类的定义中找不到任何id
,请提供更新的课程。
var resltCollection = AllCarsList.SelectMany(p => p.cars,(parent, child) => new
{
ID = parent.id,
Color = child.color,
Model = child.model
}).ToList();