如何在LINQ查询中的.Select()中获取新创建的对象

时间:2019-03-01 11:45:23

标签: c# linq

如何在下面的Linq中获得对“父”对象的引用。当您查询EF类的对象时,类似于EF的方式吗?

void Main()
{
  IEnumerable<SomeModel> Brands = ....;
  var list = Brands
    .Select(b => new BrandModel()
    {
      ID = b.ID,
      BrandName = b.Name,
      Locations = b.Locations.Select(l => new LocationModel()
      {
        ID = l.ID,
        LocationName = l.Name,
        Brand = *here I would want the Brand object of this Location*
      }).ToList()
    }).ToList();
}

private class BrandModel
{
  public int ID { get; set; }
  public string BrandName { get; set; }
  public List<LocationModel> Locations { get; set; }
}

private class LocationModel
{
  public int ID { get; set; }
  public string LocationName { get; set; }
  public BrandModel Brand { get; set; }
}

1 个答案:

答案 0 :(得分:1)

您可以分两步创建BrandModel。首先创建没有位置的图片,然后为其设置位置

为此,您需要将lambda b => new BrandModel()转换为语句块b => { return new BrandModel() }。尝试以下代码:

.Select(b =>
  {
      var model = new BrandModel
      {
          ID = b.ID,
          BrandName = b.Name
      };

      model.Locations = b.Locations.Select(l => new LocationModel
      {
          Brand = model
      }).ToList();

      return model;
  });