我正在学习 LINQ-to-SQL,一切都很顺利,直到发生了一些奇怪的事情:
我试着举个例子distinct
,因此,使用 Northwind 数据库,我编写了以下查询:
var query =
from o in db.Orders
orderby o.CustomerID
select new
{
o.CustomerID
};
如果我打印 LINQ-to-SQL 为存储在中的查询生成的 SQLquery
它看起来像这样:
SELECT [t0].[CustomerID]
FROM [dbo].[Orders] AS [t0]
ORDER BY [t0].[CustomerID]
因此,像往常一样,查询会带来所有CustomerID
对于每个Order
in the Orders
表按字母顺序排列。
但!如果我使用Distinct()
像这样的方法:
var query = (
from o in db.Orders
orderby o.CustomerID
select new
{
o.CustomerID
}).Distinct();
查询带来了预期的结果Distinct
条款,但是CustomerID
尽管我写了,但 s 没有被订购orderby o.CustomerID
!
第二个 LINQ 查询的 SQL 查询如下:
SELECT DISTINCT [t0].[CustomerID]
FROM [dbo].[Orders] AS [t0]
正如我们所看到的**ORDER BY
缺少条款。这是为什么?
为什么ORDER BY
当我使用时子句消失Distinct()
method?