LINQ to Object 如何执行查询
LINQ 查询不会立即执行。在构建查询时,你只需存储查询以供将来执行。只有当你实际请求迭代查询时才执行查询(例如,在 for 循环中,当调用 ToList,Count,Max,Average,First 等时)
这被认为是延期执行。这允许你在多个步骤中构建查询,可能基于条件语句对其进行修改,然后仅在需要结果时才执行它。
鉴于代码:
var query = from n in numbers
where n % 2 != 0
select n;
上面的示例仅将查询存储到 query
变量中。它不执行查询本身。
foreach
语句强制查询执行:
foreach(var n in query) {
Console.WriteLine($"Number selected {n}");
}
一些 LINQ 方法也会触发查询执行,Count
,First
,Max
,Average
。它们返回单个值。ToList
和 ToArray
收集结果并分别将它们转换为 List 或 Array。
请注意,如果在同一查询上调用多个 LINQ 函数,则可以多次遍历查询。这可以在每次通话时给出不同的结果。如果你只想使用一个数据集,请确保将其保存到列表或数组中。