假设我有一个带有DateTime字段和int字段的表,并执行如下查询:
var query = context.tblSomeTable.Where(s=>s.Name == "Hello World").OrderBy(s=>s.SignUpDate);
如果我随后用结果执行两个子查询,它们是否仍按日期排序?:
var sub1 = query.Where(s=>s.Id = 5);
var sub2 = query.Where(s=>s.Id = 8);
我的直觉说它们仍处于有序状态,但是如果原始查询已被迭代/执行了,这是否重要?
答案 0 :(得分:7)
是的,然而,说它们“仍然”被命令是错误的。他们最后一次订购。
关于LinqtoSql需要注意的重要一点是,它只是构建一个查询,在使用时执行。在您显示的示例中,您尚未实际使用该查询。你刚刚构建了两个大问题
他们都会生成这个SQL语句:
select * from tblSomeTable s
where s.Name = 'Hello World' and s.ID == @p1
order by s.SignUpDate
使用sub1时,@ p1将设置为5
(实际上,'Hello World'也将作为参数传递......)
答案 1 :(得分:1)
是的,它仍然保持相同的顺序。在你的情况下,第一个查询将是一个IOrderedQueryable,当你进一步查询时,sub1和sub2也将是IOrderedQueryable,因此将保持排序。