2014-10-19 6 views
0

내가는 조건문

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); 
에 대한 다음과 같은 오류를 얻을 경우 사용하지 않을 경우 키가 다음 찾기를 사용할 경우 사용 기록을 찾기 위해 노력하고 대한 LINQ의 enitity를 저장하는 변수를 선언

내가이 answer에서 패턴을 복사하고 system.data.entity.dbset

에서 app.Model.BeveragePrices을 변환 할 수 없습니다하지만 뭔가 달라야합니다.

+0

Find 함수 호출 안에 술어를 넣는 것을 잊은 것 같습니다. 수정 및 다른 옵션에 대한 내 대답을 참조하십시오. – ilans

+1

'Find' 메쏘드는 하나의 엔티티를 리턴하지만 암시 적으로 콜렉션으로 타입 된'prices'를 가지고 있습니다. 이로 인해 오류가 발생합니다. –

+0

@Alla - 나는 당신이 하나의 존재에 대해 옳다고 생각합니다. 나는 이것을 답에 추가 할 것이다. Tnx. – ilans

답변

1

Find 함수 호출 안에 술어를 넣는 것을 잊은 것 같습니다. 또한 컬렉션에서 ToList해야합니다. 두 번째 옵션은 훨씬 효율적입니다. 첫 번째 것은 선택 전에 전체 컬렉션을 가져옵니다.

@Alla에 의해 주석 처리 된 또 다른 메모는 find가 단일 요소를 반환한다는 것입니다. 그래서 저는 여기서 제가 말하는 첫 번째 옵션에서 '가격'에 대한 또 다른 선언이 있다고 가정합니다.

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

또는

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

나는 필드 이름이 을 PriceId 가정.