2013-10-10 59 views
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(); 

我得到一個錯誤,我想展示只在柏林的商店。

+1

什麼是你所得到的錯誤? –

+1

你會得到什麼錯誤?如果從另一端走 - 比如'db.Locations.Where(l => l.City ==「Berlin」),不是更好嗎?Select(l => l.DeliveryShop)' – Pawel

+1

@Pawel no pawel ,它不會更好,我想顯示在我的視圖中有位置城市名稱「柏林」的商店..請幫我 – Usama

回答

0

你的LINQ沒有意義。它可能應該是:

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

LINQ Where Method需要Func<TSource, bool> predicate(即返回一個布爾值的方法)。下面的代碼不會返回一個bool:

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> 
+0

謝謝你救了我 – Usama

相關問題