2011-07-30 3 views
1

다음과 같은 데이터베이스 구조가 있습니다. 제품의 기본 가격은 해당 제품의 행이 주어진 rateID에 대해 발견 된 경우 대체 될 수 있습니다. 행이없는 경우 기본 가격이 반환됩니다. 가격은 EntityCollection이므로 IQueryable 인터페이스를 구현하지는 않습니다. 내 모델 내에서이 로직을 사용하고 현재 구현이 작동하지만 forloop을 사용하면 코드를 개선하는 방법에 대한 아이디어가 매우 적합하지 않습니까?EntityCollection에서 foor 루프를 사용하는 대신?

테이블

제품

ProductID 
Name 
Price 

속도

RateID 
Name 

가격

PriceID 
ProductID 
RateID 
Price 

내 제품 모델 :

내 컨트롤러 :

public ActionResult Prices() { 

     var products = storeDB.Products 
      .Include("Family") 
      .Include("Prices") 
      .OrderBy(product => product.Name) 
      .ToList(); 

     var viewModel = new ProductPricesViewModel { 
      Products = products.ToList(), 
      Rates = storeDB.Rates.ToList() 
     }; 

     return View(viewModel); 
    } 

답변

0

시도

대체
return (from p in Prices where p.Rate.RateId == rateId select p.NewPrice).DefaultIfEmpty (DefaultPrice); 

:

return Prices.Where (p => p.Rate.RateId == rateId).Select (p.NewPrice).DefaultIfEmpty (DefaultPrice); 

http://msdn.microsoft.com/de-de/library/bb356814.aspx

참조
관련 문제