Her*_*des 11 .net c# linq linq-to-sql
只是想知道,添加LINQ方法的顺序是否重要?
例如.
using(MyDataContext context = new MyDataContext())
{
var user = context.Users
.Where(u => u.UserName.StartsWith("t"))
.OrderByDescending(u => u.CreatedDate)
.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
这完全一样吗?
using(MyDataContext context = new MyDataContext())
{
var user = context.Users
.OrderByDescending(u => u.CreatedDate)
.Where(u => u.UserName.StartsWith("t"))
.FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
当然我可以逐个测试所有方法,但我想对逻辑有一些大概的了解.
所以:
再次感谢!
Jon*_*eet 10
在LINQ to SQL中,我希望这两个查询是相同的 - 至少,它们应该以相同的查询计划结束,即使不是完全相同的SQL.
在LINQ to Objects中,它们的行为会有很大不同.想象一下,你有一百万用户,但只有两个用户名以"t"开头.在第一种形式中,您将过滤然后对这两个用户进行排序...在第二种形式中,它需要在开始过滤之前对所有内容进行排序.
当然还有其他情况下,顺序也很重要 - 特别是,如果你有Select一半的顺序,然后一个Where条款,那么你将过滤不同的事情.想象一下:
var query = Enumerable.Range(-20, 30)
.Select(x => -x)
.Where(x => x > 5);
Run Code Online (Sandbox Code Playgroud)
VS
var query = Enumerable.Range(-20, 30)
.Where(x => x > 5)
.Select(x => -x);
Run Code Online (Sandbox Code Playgroud)
在第一个例子中,结果将是"20,19,18,... 6",而在第二个查询中,结果将是"-6,-7,-8,-9,-10".千差万别!
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |