var query = from c in customers
join o in orders on c.CustomerId equals o.CustomerId into os
select new { c, os };
foreach (var item in query)
{
Console.WriteLine("Customer Id:{0}, Name:{1}",
item.c.CustomerId, item.c.Name);
foreach (var o in item.os)
{
Console.WriteLine("--Order Id:{0}", o.OrderId);
}
}
我想知道 os现在是什么数据了
如果用t-sql应是customers 和orders 两个表的数
但实际上好像又只是orders这个表的数据,有点乱了,帮指点下
这个例 子是
http://www.cnblogs.com/c-jquery-linq-sql-net-problem/archive/2011/01/17/LINQ_Inner_Join_Group_Join_Left_Join.html#printSource
这里面的
这是个左外连接查询,query 是连接查询整个结果集,os只是orders表中满足条件的数据。
相当于sql语句:
select c.*,o.* from customers c left join orders o on c.CustomerId =o.CustomerId
group by into 得到的是分组后的数据
left join o in order c.customer.id equal order.id into os
按理解应该是 c.*,o.*
全量的结果集。query.c表示customer表的数据,query.os 表示orders表的数据。
sql的本质和实体框架等的理念是冲突的.
因此实体框架不可能取代sql:如果取代,那么他应该以sql为本.但理念有不一致.
实际上应该是两个表的数据,楼主运行出来时什么数据?
运行实际就是Order的数据
不理解这点