protected void Page_Load(object sender, EventArgs e) { NorthwindDataContext db = new NorthwindDataContext(); var q = from e1 in db.Employees join o in db.Orders on e1.EmployeeID equals o.EmployeeID into ords from o in ords.DefaultIfEmpty() select new { e1.FirstName, e1.LastName, Order = o };
我跟踪的q的值就是这个 {SELECT [t0].[FirstName], [t0].[LastName], [t2].[test], [t2].[OrderID], [t2].[CustomerID], [t2].[EmployeeID], [t2].[OrderDate], [t2].[RequiredDate], [t2].[ShippedDate], [t2].[ShipVia], [t2].[Freight], [t2].[ShipName], [t2].[ShipAddress], [t2].[ShipCity], [t2].[ShipRegion], [t2].[ShipPostalCode], [t2].[ShipCountry] FROM [dbo].[Employees] AS [t0] LEFT OUTER JOIN ( SELECT 1 AS [test], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[RequiredDate], [t1].[ShippedDate], [t1].[ShipVia], [t1].[Freight], [t1].[ShipName], [t1].[ShipAddress], [t1].[ShipCity], [t1].[ShipRegion], [t1].[ShipPostalCode], [t1].[ShipCountry] FROM [dbo].[Orders] AS [t1] ) AS [t2] ON ([t0].[EmployeeID]) = [t2].[EmployeeID] }
我去掉开头和末尾的那两个大括号,然后 在sql server 中运行,查出来的符合条件的记录有十七列,而在GridView中显示的就只有FirstName 和LastName这两列 [其他解释] 掉出首页了,顶上去! [其他解释]
我调试的时候看了下q的值 var q = from e1 in db.Employees join o in db.Orders on e1.EmployeeID equals o.EmployeeID into ords from o in ords.DefaultIfEmpty() select new { e1.FirstName, e1.LastName, Order = o };
然后把相应的sql语句放到sql server 中去运行,查询到的列有十七列 ,为什么在GridView中只显示两列? [其他解释] 可是q的值不是这个吗? {SELECT [t0].[FirstName], [t0].[LastName], [t2].[test], [t2].[OrderID], [t2].[CustomerID], [t2].[EmployeeID], [t2].[OrderDate], [t2].[RequiredDate], [t2].[ShippedDate], [t2].[ShipVia], [t2].[Freight], [t2].[ShipName], [t2].[ShipAddress], [t2].[ShipCity], [t2].[ShipRegion], [t2].[ShipPostalCode], [t2].[ShipCountry] FROM [dbo].[Employees] AS [t0] LEFT OUTER JOIN ( SELECT 1 AS [test], [t1].[OrderID], [t1].[CustomerID], [t1].[EmployeeID], [t1].[OrderDate], [t1].[RequiredDate], [t1].[ShippedDate], [t1].[ShipVia], [t1].[Freight], [t1].[ShipName], [t1].[ShipAddress], [t1].[ShipCity], [t1].[ShipRegion], [t1].[ShipPostalCode], [t1].[ShipCountry]
FROM [dbo].[Orders] AS [t1] ) AS [t2] ON ([t0].[EmployeeID]) = [t2].[EmployeeID] }
去掉一前一后的大括号,然后在sql server 中运行都能查询出十七列来 而q又等于这个 var q = from e1 in db.Employees join o in db.Orders on e1.EmployeeID equals o.EmployeeID into ords from o in ords.DefaultIfEmpty() select new { e1.FirstName, e1.LastName, Order = o }; 为什么结果不一样?只是形式变了而已呀