学习LINQ查询时,经常会遇到LINQ查询子句问题,这里将介绍LINQ查询子句问题的解决方法。
制定数据源(FROM):
在LINQ查询子句中,第一步是指定要查询的数据源。因此,查询中的 From 子句总是最先出现。语法是:FROM 范围变量 in 数据源 ,范围变量类似于循环迭代变量,但在查询表达式中,实际上不发生迭代。执行查询(通常使用 For Each 循环执行)时,范围变量将用作对 数据源集合中的每个元素的引用。From 子句用于标识查询的源数据,以及用于引用源集合中元素的变量。这些变量称为范围变量。可以指定查询中的多个 From 子句,以标识要联接的多个集合。指定多个集合时,将单独循环访问这些集合,或者如果这些集合是相关的,则可以联接它们。您可以通过使用 Select 子句隐式联接集合,或者通过使用 Join 或 Group Join 子句显式联接集合。或者,您可以在单个 From 子句中指定多个范围变量和集合,并用逗号将每个相关的范围变量和集合分隔开。每个 From 子句后面可跟其他LINQ查询子句的任意组合以优化查询。
范围变量,用于在查询循环访问 集合 时,引用 集合 的每个成员。必须为可枚举类型。
范围变量的类型可选。如果不指定 类型,则编译器自动根据集合推断范围变量的类型。后续 From 子句可以引用 From 子句中的范围变量,或者它们可以引用以前的 From 子句中的范围变量。
- Dim allOrders = From cust In GetCustomerList() _ From ord In cust.Orders _ Select ord
筛选数据(WHERE):
Where子句用于执行筛选。筛选器指定要在结果序列中包含数据源中的哪些元素,可以使用逻辑运算符(如 And、Or、AndAlso、OrElse、Is 和 IsNot)可以将多个表达式组合在一个Where子句中。
默认情况下,查询表达式直到被访问时才计算结果。因此,在访问查询前,不会计算Where子句。所以如果值位于Where子句中使用的查询外部,请确保查询执行时在Where子句中使用适当的值。
您可以在Where子句中调用函数,以便对集合中当前元素的值执行计算或运算。在Where子句中调用函数可使查询在定义后立即执行,而不是在访问时执行。
【编辑推荐】