2015-06-30 58 views
5

我有3個表沒有外鍵(這是一個傳統的數據庫,所以我不能改變)。 該模型將是這樣的(SQL代碼):Linq到3表沒有外鍵

Select 
    PROD.ProductoId, 
    PROD.Descripcion, 
    STK.StockActual, 
    DEPO.DepositoId, 
    DEPO.Descripcion 
From 
    Productos PROD, 
    Stock  STOK, 
    Depositos DEPO 
where 
    PROD.ProductoId = STOK.ProductoId 
    and DEPO.DepositoId = STOK.DepositoId 

我如何做才能使用LINQ在C#相同的結果?

+1

題外話建議:指定表明確地聯接,即使用'JOIN'語法:'... FROM PRODUCTOS PROD JOIN股票STOK ON PROD .ProductoId = STOK.ProductoId JOIN Depositos DEPO ON DEPO.DepositoId = STOK.DepositoId'。請參閱[本程序員SE問答](http://programmers.stackexchange.com/questions/78225/using-join-keyword-or-not),爲什麼要這樣做。 – stakx

回答

2

試試這個:

var result = from prod in _context.Productos 
      join stok in _context.Stocks on prod.ProductoId equals stok.ProductoId 
      join depo in _context.Depositos on stok.DepositoId equals depo.DepositoId 
      select new 
      { 
       ProductoId = prod.ProductoId, 
       ProductoDescripcion = prod.Descripcion, 
       StockActual = stok.StockActual, 
       DepositoId = depo.DepositoId, 
       DepositoDescripcion = depo.Descripcion 
      }; 
+0

我會嘗試一下,然後我會發布結果!謝謝!! –

+0

當然,我不確定它是否正確。我剛開始使用linq自己。 –

+0

我想在第一次加入後,您應該選擇PROD.ProductoId,PROD.Descripcion,STK.StockActual,STOK.DepositoId放入新表格並加入存款表 –

2

爲什麼不在Sql中創建視圖然後更新模型,這樣就可以從View類查詢。

+0

Tks但我不能在數據庫中創建任何內容,因爲它來自第三方系統。 –

1

試試這個:

var Query = from data in _db.Productos 
join stock in _db.Stock on data.ProductId equals stock.ProductoId 
join Depositos in _db.Depositos on data.DepositoId equals Depositos.DepositoId 
select new { ProductoId,Descripcion, StockActual,DepositoId,Descripcion};