当前位置: 首页 > 编程笔记 >

linq 查询语法和方法语法

薄鸿远
2023-03-14
本文向大家介绍linq 查询语法和方法语法,包括了linq 查询语法和方法语法的使用技巧和注意事项,需要的朋友参考一下

示例

查询语法和方法语法在语义上是相同的,但是许多人发现查询语法更简单易读。假设我们需要从一组数字中检索升序排列的所有偶数项。

C#:

int[] numbers = { 0, 1, 2, 3, 4, 5, 6 };

// 查询语法:
IEnumerable<int> numQuery1 =
            from num in numbers
            where num % 2 == 0
            orderby num
            select num;

// 方法语法:
IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n);

VB.NET:

Dim numbers() As Integer = { 0, 1, 2, 3, 4, 5, 6 }

' Query syntax: '
Dim numQuery1 = From num In numbers
                 Where num Mod 2 = 0
                 Select num
                 Order By num

' Method syntax: '
Dim numQuery2 = numbers.where(Function(num) num Mod 2 = 0).OrderBy(Function(num) num)

请记住,某些查询必须表示为方法调用。例如,您必须使用方法调用来表达查询,该查询检索与指定条件匹配的元素数量。您还必须对查询使用方法调用,以检索源序列中具有最大值的元素。因此使用方法语法使代码更一致可能是一个优点。但是,当然,您始终可以在查询语法调用之后应用该方法:

C#:

int maxNum =
    (from num in numbers
     where num % 2 == 0
     select num).Max();

VB.NET:

Dim maxNum =
    (From num In numbers
     Where num Mod 2 = 0
     Select num).Max();
           

 类似资料:
  • 问题内容: 需要将三个表连接在一起。 进入一个表示要在我的视图中显示的对象的视图模型: 但是我在加入时遇到了问题: 还有另一种方法(如上所述)进行两个联接吗? 解决方案 基于方法的语法在这里是行不通的,必须与查询语法一起使用: 问题答案: 我假设您想加入UserHasPackages表,因为您想过滤特定用户的结果(我只是输入了’SomeUser’,因为我不确定’UserHasPackages.Ap

  • 我正在使用JDBC尝试从以下表中选择: 我想检查是否存在具有特定login和PASSWORDMD5值的行,如下所示: 但当我调用时,我会得到以下错误: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:sun.reflect.nativeConstructorAccessorImpl.newInstance(nativeConstr

  • 问题内容: 我希望能够使用“替换为”语句更新相同架构的表。最后,我需要能够使用可能已更改的值更新大型表。 这是我用来开始的查询: 我不明白的是,数据库引擎如何知道什么是重复行,什么不是?这些数据非常重要,我不能冒险破坏数据。是否简单如“如果列出的所有列都具有相同的值,它就是重复的行”? 我只是想找出一种有效的方法来执行此操作,因此我可以在一分钟内更新> 45,000行。 问题答案: 如文档所述:

  • 问题内容: 我正在尝试按日期对我的讨论区中的帖子进行排序。这是我的代码: 这在语法上有什么问题吗?如果没有,还有什么可能是错误的?基本上发生的是结果没有显示出来。我删除了Order,它可以工作(但当然没有排序…) 问题答案: 订购应超出限制:

  • 问题内容: 当我运行查询时: 我得到错误: 如何正确制定此查询? 我在使用SQL Server 2000 问题答案: 在最后一个括号后添加一个别名。

  • 在扩展查询模式中可以使用如下特殊操作符:  或(OR)操作符: hello | world  非(NOT)操作符: hello -world hello !world  字段(field)搜索符: @title hello @body world  字段限位修饰符(版本Coreseek 3/Sphinx 0.9.9-rc1中引入): @body[50] hello  多字段搜索符: @(