我需要帮助来理解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