[英]Are subqueries in LinqToSql guaranteed to be in the same order as their parent?
假设我有一个带有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);
我的直觉说它们仍处于有序状态,但是如果原始查询已被迭代/执行了,这是否重要?
是的,然而,说它们“仍然”被命令是错误的。 他们最后订购一次。
关于LinqtoSql的重要注意事项是它只是构建一个查询,它在使用时执行。 在您显示的示例中,您尚未实际使用该查询。 你刚刚建立了两个大问题
他们都会生成这个SQL语句:
select * from tblSomeTable s
where s.Name = 'Hello World' and s.ID == @p1
order by s.SignUpDate
使用sub1时,@ p1将设置为5
(实际上,'Hello World'也将作为参数传递......)
是的,它仍然保持相同的顺序。 在您的情况下,第一个查询将是一个IOrderedQueryable,当您进一步查询时,sub1和sub2也将是IOrderedQueryable,因此将保持排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.