我正在学习LINQ-to-SQL,一切都很顺利,直到发生奇怪的事情:
我试着做一个例子distinct,所以,使用Northwind dabatase我写了以下查询:
var query =
from o in db.Orders
orderby o.CustomerID
select new
{
o.CustomerID
};
Run Code Online (Sandbox Code Playgroud)
如果我打印LINQ-to-SQL为其中存储的查询生成的SQL,query则如下所示:
SELECT [t0].[CustomerID]
FROM [dbo].[Orders] AS [t0]
ORDER BY [t0].[CustomerID]
Run Code Online (Sandbox Code Playgroud)
所以,像往常一样,查询把所有的CustomerID每一个Order中Orders按字母顺序排序表.
但!如果我使用这样的Distinct()方法:
var query = (
from o in db.Orders
orderby o.CustomerID
select new
{
o.CustomerID
}).Distinct();
Run Code Online (Sandbox Code Playgroud)
该查询带来了该Distinct子句的预期结果,但是CustomerID尽管我写了,但是没有订购orderby o.CustomerID!
第二个LINQ查询的SQL查询如下:
SELECT DISTINCT [t0].[CustomerID]
FROM [dbo].[Orders] AS [t0]
Run Code Online (Sandbox Code Playgroud)
我们可以看到**该ORDER BY条款缺失.这是为什么?
ORDER BY当我使用该Distinct() …