2014-10-19 49 views
0

我試圖查找記錄使用,如果我有那麼關鍵使用查找,如果當聲明變量來保存LINQ enitity的條件語句

private ApplicationDbContext db = new ApplicationDbContext(); 

    public bool DeactivatePrice(int priceId = 0, string sponsorUserName = "") 
    { 
     var prices = db.BeveragePrices; 

     // if we have an id then find 
     if (priceId != 0) 
     { 
      prices = prices.Find(priceId); 
     } 
     else 
     { 
      prices = prices.Where(b => b.UserCreated == sponsorUserName); 
     } 

     if (prices != null) 
     { 
      // do something 
     } 
     return true; 

我收到以下錯誤

prices = prices.Find(priceId); 
無法使用

無法從system.data.entity.dbset

轉換app.Model.BeveragePrices我從這個answer複製模式,但東西必須是不同的。

+0

似乎你忘了在查找函數調用中放置一個謂詞。請參閱我的答案以獲得解決方法和其他選項。 – ilans 2014-10-19 19:07:33

+1

'Find'方法返回一個單一的實體,但你有'價格'隱含類型爲一個集合。這會導致錯誤。 – 2014-10-19 22:22:35

+0

@Alla - 我認爲你對單一實體是正確的。我會將其添加到答案中。 TNX。 – ilans 2014-10-22 01:49:20

回答

1

似乎你忘記了在Find函數調用中放置一個謂詞。您還需要在集合上執行ToList。第二種方法效率更高。第一個在選擇前獲得整個集合。

@Alla的另一個註釋是查找返回單個元素。所以我假設我在這裏陳述的第一個選項中已經爲'價格'做了另一個聲明。

price = prices.ToList.Find(b => b.PriceId == priceId);

或者

prices = prices.Select(b => b.PriceId == priceId);

我假設字段名稱爲PriceId