【发布时间】:2012-01-02 15:50:23
【问题描述】:
我需要帮助来了解 linq 加入。我发现了一些与此问题相关的主题,但我没有找到一个对步骤有很好解释的主题。
我正常查询,我这样做。
var q = from c in context.tableA
select c;
List<tableA> tableAList = q.ToList();
在 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,但是这个“select new”呢?是否为数据库中的每条记录调用?
那个对象是什么类型的?我想要或正在订购的任何人,因为是查询中的第一个表?
如果对象是第一个表,如果我需要没有在这种类型中定义的数据会发生什么,我的意思是新的属性。
其他问题,查询什么时候执行?
另外,这种方法对响应速度有好处还是更好的解决方案?
提前谢谢。如果有这个答案的线程请指出我。
【问题讨论】:
标签: c# linq entity-framework