如何使用lambda从集合中获取所有记录

时间:2017-02-16 17:29:17

标签: c# lambda

如何使用以下场景中的lambda获取对象的新列表:

示例类: AllCARS是一个集合:     公共类AllCars     {         int id {get;组;}         列车{get;组;}     }

public class cars 
{
   string color;
   string model;
}

我尝试了以下没有产生所有行的内容:

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蓝色丰田

2 个答案:

答案 0 :(得分:0)

如果我理解正确的问题,则无法对具有集合的对象执行linq请求。但是,您可以查询此对象内的集合以生成所需的输出。希望以下代码片段能够提供帮助:

var carsWithIds = carRepo.cars.Select(a => new {id = carRepo.id, a.color, a.model });

此代码允许您获取匿名类的新对象,其中包含字段:id,color和model。

您的代码示例中存在一些不准确之处。不要忘记将AllCars和汽车类的属性公之于众;否则他们就无法访问。

答案 1 :(得分:0)

AllCarsList成为AllCars的集合,然后您可以使用扩展方法.SelectMany来获取resultCollection。请仔细阅读以下代码和示例,如果有帮助以及更多说明,请告诉我。

 var resltCollection =  AllCarsList.SelectMany(p => p.cars,(parent, child) => new
                                                  {
                                                      ID = parent.id,
                                                      Color = child.color,
                                                      Model = child.model
                                                  }).ToList();

这是一个有效的Example