1

我已经尝试了很多,但我无法通过互联网找到任何解决方案。我正在尝试获取集合中属性的值。

这是 DeliveryShop 实体:

[Key]
public int DeliveryShopId { get; set; }
public int MinOrderForDelivery { get; set; }
public bool HasDelivery { get; set; }
public bool HasTakeAway { get; set; }

public virtual List<Location> Locations { get; set; }

这是位置实体:

[Key]
public int LocationId { get; set; }
public int DeliveryShopId { get; set; }
public string City { get; set; }
public string Country { get; set; }
public string ZIP { get; set; }
public virtual DeliveryShop DeliveryShop { get; set; }

这是我对索引操作方法的查询:

viewModel.DeliveryShop = db.DeliveryShops.Where(c => c.Locations.Where(l => l.City == "Berlin")).ToList();

我收到一个错误,我想显示仅在柏林的商店。

4

1 回答 1

0

您的 LINQ 没有意义。应该是:

viewModel.DeliveryShop = db.DeliveryShops
  .Where(c => c.Locations
    .Any(l => l.City == "Berlin"))
  .ToList();

LINQ Where 方法需要一个Func<TSource, bool> predicate(返回布尔值的方法)。以下代码不返回布尔值:

c.Locations.Where(l => l.City == "Berlin")

正如Pawel在评论中提到的那样,另一种方法是:

viewModel.DelipveryShop = db.Locations
  .Where(l => l.City == "Berlin") // returns IQueryable<Location>
  .Select(l => l.DeliveryShop)    // returns IQueryable<DeliveryShop>
  .ToList();  // returns List<DeliveryShop>
于 2013-10-10T18:47:14.023 回答