2009-09-22 207 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给你什么。