我需要幫助來理解linq連接。我發現了與這個問題有關的幾個主題,但我沒有找到一個有很好解釋的步驟。以實體框架加入linq
我正常的查詢,我這樣做。
var q = from c in context.tableA
select c;
List<tableA> tableAList = q.ToList();
in q.ToList()它獲得執行查詢,對嗎?
here發現了一些例子,但我想清楚這一點,
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
ObjectSet<SalesOrderHeader> orders = context.SalesOrderHeaders;
ObjectSet<SalesOrderDetail> details = context.SalesOrderDetails;
var query =
from order in orders
join detail in details
on order.SalesOrderID equals detail.SalesOrderID
where order.OnlineOrderFlag == true
&& order.OrderDate.Month == 8
select new
{
SalesOrderID = order.SalesOrderID,
SalesOrderDetailID = detail.SalesOrderDetailID,
OrderDate = order.OrderDate,
ProductID = detail.ProductID
};
foreach (var order in query)
{
Console.WriteLine("{0}\t{1}\t{2:d}\t{3}",
order.SalesOrderID,
order.SalesOrderDetailID,
order.OrderDate,
order.ProductID);
}
}
所以從這個例子我可以看到,查詢可以有超過1 objetc但對於這個「選擇新的」?它是否被稱爲數據庫中的每個記錄?
什麼類型是對象?我想要的任何人或是訂單,因爲是查詢中的第一個表?
在對象的情況下,是第一臺,如果我需要有一個未在這種類型的,我的意思是新ATTR定義的數據會發生什麼。
其他問題,當查詢執行?
而且,這種方法很好的響應速度或更好的解決方案?
thx提前。如果有一個線程與這個答案plz指向我很好。
你告訴我的是正確的。現在我得到了一個例子的錯誤。與ON表明它說,順序和細節是不正確的與平等,但與他們的工作表明他們的工作是正確的。任何線索? – 2012-01-03 15:22:35
錯誤:名稱「訂單」不在「等於」左側的區域內。改變'equals'兩邊的表達式。 – 2012-01-03 15:34:05
如果有人在意,事情就是這個順序在這裏。我是在平等的左邊放置細節,並且必須繼續下去。 – 2012-01-03 16:32:00