2013-08-17 130 views
0

通常在T-SQL如果我使用:LINQ相當於一個連接查詢;

SELECT * 
FROM Orders 
INNER JOIN Customers 
ON Orders.CustomerID=Customers.CustomerID; 

它返回的所有表中的所有列,我怎麼能做到這一點的LINQ?

嘗試:

var query = from siparis in db.Siparis 
      join kazan in db.Kazan on siparis.ID equals kazan.Siparis_ID into Joined 
      select Joined; 

但它只返回我的對象​​,而不是一切。

+0

當你知道在這兩個集合中的兩個元素的所有屬性這隻能完成。然後,您可以使用「選擇」來投影具有所有屬性的新匿名類型值。 –

回答

0

這相當於

var query = from siparis in db.Siparis 
       join kazan in db.Kazan on siparis.ID equals kazan.Siparis_ID 
       select siparis; 

爲了得到結果在最後添加.ToList像

var query = (from siparis in db.Siparis 
       join kazan in db.Kazan on siparis.ID equals kazan.Siparis_ID 
       select siparis).ToList(); 
1

你需要返回兩個對象,或者從每一個選擇。這是在你的問題的評論中指定的。但我只是認爲一個例子會有所幫助。

var query = from siparis in db.Siparis 
      join kazan in db.Kazan on siparis.ID equals kazan.Siparis_ID 
      select new { 
         siparis, 
         kazan 
         }; 

var query = from siparis in db.Siparis 
      join kazan in db.Kazan on siparis.ID equals kazan.Siparis_ID 
      select new { 
         SiparisID = siparis.ID, 
         KazanID = kazan.ID, 
         SiparisColumnX = sipariz.X, 
         KazanColumnX = kazan.X 
         }; 
+0

我明白了,但我也必須知道每個對象的所有屬性嗎?所以沒有「*」等價物。 – Sin5k4

+0

您確實需要知道哪些列投影到上面示例2中顯示的新匿名對象。當我想要訪問所有字段時,我通常在第一個示例中使用該方法。 – smiggleworth