我正在使用以下查询语法
from table
where
where
orderby
orderby
其中第一个 orderby 是日期,第二个 orderby 是日期。我认为这会像 orderby thenby 一样工作,但似乎在做其他事情。
如何使用上述语法而不使用扩展语法来执行 orderby thenby 。 (知道了)
orderby、orderby 是做什么的?
如何使用上述语法而不使用扩展语法来执行 orderby thenby 。
在字段之间使用逗号:
orderby a, b
orderby、orderby 是做什么的?
当你使用orderby
从概念上讲,连续两次元素将首先使用第一个进行排序orderby
,然后使用第二个再次排序orderby
。因为排序被定义为稳定排序 https://stackoverflow.com/questions/1209935/orderby-and-orderbydescending-are-stable(与第二个绑定的对象orderby
将保持与第一个排序后相同的顺序orderby
它实际上意味着:
var query = from x in l
orderby x.A
orderby x.B
select x;
相当于:
var query = from x in l
orderby x.B, x.A
select x;
结果是orderby
术语与您可能想要的内容互换。
使用 LINQ to SQL 进行测试
这可以通过在 LINQ to SQL 中尝试来验证。我创建了以下查询:
var query = from a in dc.Orders
orderby a.Date
orderby a.CustomerID
select a;
这是生成的 SQL:
SELECT [t0].[ID], [t0].[CustomerID], [t0].[Date], [t0].[Description]
FROM [dbo].[Order] AS [t0]
ORDER BY [t0].[CustomerID], [t0].[Date]
请注意,orderby a.Date
没有被忽略。这两个术语都包含在 ORDER BY 子句中,但顺序与您预期的相反。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)