2009-09-22 250 views
1

我在Linq to Sql的多表查詢時遇到了一些困難。 我有3個表:SQL查詢到Linq到SQL

  • 產品
  • 行(與FK-產品編號
  • 價格(與FK-RowId的

我想找回分鐘(價格)的產品。我能夠得到正確的Sql查詢,但現在我需要將此查詢翻譯成Linq To Sql。 你能幫我嗎?

這裏的SQL查詢:

SELECT Min(cp.Price) 
FROM Products p, Rows r, ConstantPrices cp 
WHERE p.ProductId = r.ProductId AND 
     r.RowId = cp.RowId AND 
     p.ProductId = XXX; 

回答

1

這裏有一個解決方案:

decimal? min = (from p in db.Products 
       join r in db.Rows on p.ProductId equals r.ProductId 
       join cp in db.ConstantPrices on r.RowId equals cp.RowId 
       where p.ProductId == 1 
       select cp.Price).Min(); 
+0

不要忘了讓現場空的,正如我在答覆中提到不這樣做,如果沒有項目會拋出異常。 – eglasius 2009-09-22 17:38:36

0
var productQuery = from p in myContext 
       where p.id == someId 
       select (double?) p.Row.Price; 
var minPrice = productQuery.Min(); 

其重要的在那裏爲空,否則如果在系統中沒有產品或行或價格,它會失敗。

它不關於翻譯查詢,它關於利用linq2sql給你什麼。