繁体   English   中英

LinqToSql中的子查询是否保证与其父级的顺序相同?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM