item).Where(it => it.StartsWith("S")) 最佳答案 我假设-6ren">
gpt4 book ai didi

c# - 这个函数的执行顺序是什么 : var queryResult = names. OrderBy(item => item).Where(it => it.StartsWith ("S"))

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:41 24 4
gpt4 key购买 nike

这个函数的执行顺序是什么:

var queryResult = names.OrderBy(item => item).Where(it => it.StartsWith("S"))

最佳答案

我假设 names 是一个简单表映射中列的投影,例如:

var names = ctx.SomeTable.Select(row => row.Name);

好吧,本身实际上并没有任何执行;它构建了一个组合查询表示(从外到内):

  1. 哪里 [谓词]
  2. (包装)OrderBy [选择器]
  3. (包装)选择 [选择器]
  4. (包装)表查询

在您迭代数据(foreachGetEnumerator() 等)或调用 First(等)之前,不会发生任何其他事情。使用 LINQ-to-SQL(来自标签),它然后构建一个适用于当前连接(特定 SQL-Server 风格)的单个 TSQL 查询(使“执行顺序”成为数据库引擎本身的问题)看起来像:

SELECT row.Name
FROM [dbo].[SomeTable] row
WHERE row.Name LIKE @p1
ORDER BY row.Name

可能将 'S%' 作为 @p1 传递。

如果这是 LINQ-to-Objects,则从外向内获取数据,每一层都向内层询问数据并根据需要过滤/操作数据。因此,对于 LINQ-to-Objects,在 OrderBy 之前执行 Where 是有意义的。使用 LINQ-to-SQL 就没关系了。

关于c# - 这个函数的执行顺序是什么 : var queryResult = names. OrderBy(item => item).Where(it => it.StartsWith ("S")),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2672400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com