C# 中的 LINQ语法和类型(两种语法)

 更新时间:2024年06月25日 10:35:05   作者:锋.谢  
LINQ 允许开发人员直接在 C# 代码中编写查询,从而更轻松地操作和转换数据,这篇文章主要介绍了C# 中的 LINQ:语法和类型,需要的朋友可以参考下

LINQ(语言集成查询)是 C# 中引入的一项功能,它提供了一种统一的方式来查询来自不同类型数据源(如集合、数组、XML、数据库等)的数据。LINQ 允许开发人员直接在 C# 代码中编写查询,从而更轻松地操作和转换数据。

编写 LINQ 查询有两种主要语法。

1. 方法语法

方法语法涉及将 LINQ 扩展方法链接在一起以形成查询。每个 LINQ 操作都由一个方法调用表示,例如 Where、Select、OrderBy、Join 等。

var result = collection
    .Where(item => item.Condition)
    .OrderBy(item => item.Property)
    .Select(item => item.Transformation);

2.查询语法

查询语法在 C# 代码中使用类似 SQL 的查询表达式。它更具声明性并且类似于 SQL 查询,使熟悉 SQL 的开发人员更容易理解和编写查询。

var result = from item in collection
             where item.Condition
             orderby item.Property
             select item.Transformation;

两种语法在功能上是等效的;它们代表相同的底层操作并产生相同的结果。开发人员可以根据可读性、个人偏好或查询的性质选择他们喜欢的语法。

LINQ 的类型

  • LINQ to Objects:用于查询内存中的数据结构,如集合、数组、列表等。
  • LINQ to XML (XLINQ):这用于使用 LINQ 语法查询 XML 数据源。
  • LINQ to SQL:这用于使用 LINQ 语法查询关系数据库。它将 LINQ 查询转换为 SQL 查询以与数据库交互。
  • LINQ to Entities:这与 LINQ to SQL 类似,但与 Entity Framework 一起使用,使用 LINQ 语法查询数据库。它使用概念实体数据模型,而不是直接使用数据库表。
  • LINQ to Dataset:这用于使用 LINQ 语法查询 ADO.NET 中的数据集。
  • LINQ to JSON (JSON.NET):虽然不是官方 LINQ 框架的一部分,但像 JSON.NET 这样的库提供了类似 LINQ 的查询 JSON 数据的功能。

例子

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

您有如下 Person 对象列表:

List<Person> people = new List<Person>
{
    new Person { Name = "Alice", Age = 25, City = "New York" },
    new Person { Name = "Bob", Age = 30, City = "Los Angeles" },
    new Person { Name = "Charlie", Age = 35, City = "Chicago" },
    new Person { Name = "David", Age = 40, City = "New York" },
    new Person { Name = "Emma", Age = 45, City = "Los Angeles" },
};

例 1.查找所有来自纽约的人。

**方法语法:**这涉及将 LINQ 扩展方法链接在一起以形成查询。

var newYorkers = people.Where(p => p.City == "New York");

**查询语法:**这涉及使用类似 SQL 的查询表达式。

var newYorkers = from p in people
                 where p.City == "New York"
                 select p;

例 2. 查找洛杉矶人的平均年龄。

方法语法:

var averageAgeLosAngelesMethodSyntax = people
    .Where(p => p.City == "Los Angeles")
    .Average(p => p.Age);

查询语法:

var averageAgeLosAngelesQuerySyntax = (from p in people
                                       where p.City == "Los Angeles"
                                       select p.Age)
                                      .Average();

例 3. 找出列表中年龄最大的人。

方法语法
方法语法:

var oldestPersonMethodSyntax = people.OrderByDescending(p => p.Age).First();

查询语法:

var oldestPersonQuerySyntax = (from p in people
                               orderby p.Age descending
                               select p).First();

两种语法在功能上是等效的;它们代表相同的底层操作并产生相同的结果。开发人员可以根据可读性、个人偏好或查询的性质选择他们喜欢的语法。

到此这篇关于C# 中的 LINQ:语法和类型的文章就介绍到这了,更多相关C# LINQ语法和类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中string用法实例详解

    C#中string用法实例详解

    这篇文章主要介绍了C#中string用法,非常详细的总结了比较常见的关于C#中string的几个常用方法,需要的朋友可以参考下
    2014-08-08
  • 详解C#如何实现窗体换肤

    详解C#如何实现窗体换肤

    这篇文章主要为大家详细介绍了如何利用C#实现窗体换肤,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C# 中的var关键字详细介绍

    C# 中的var关键字详细介绍

    这篇文章主要介绍了C# 中的var关键字详细介绍的相关资料,需要的朋友可以参考下
    2016-12-12
  • 总结C#动态调用WCF接口的两种方法

    总结C#动态调用WCF接口的两种方法

    这篇文章给大家总结了C#动态调用WCF接口的两种方法,大家可以根据自己的需求选择对应的方式,下面来一起看看。
    2016-09-09
  • 用c#实现简易的计算器功能实例代码

    用c#实现简易的计算器功能实例代码

    这篇文章主要介绍了c#实现简易的计算器功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Unity2021发布WebGL与网页交互问题的解决

    Unity2021发布WebGL与网页交互问题的解决

    本文主要介绍了Unity2021发布WebGL与网页交互问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • c# RPC框架的使用简介

    c# RPC框架的使用简介

    这篇文章主要介绍了c# RPC框架的使用简介,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C# 拼图游戏的实战(附demo)

    C# 拼图游戏的实战(附demo)

    拼图游戏是常见的一种游戏,本文详细的介绍了C#实现拼图游戏,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • unity里获取text中文字宽度并截断省略的操作

    unity里获取text中文字宽度并截断省略的操作

    这篇文章主要介绍了unity里获取text中文字宽度并截断省略的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#最小二乘法拟合曲线成直线的实例

    C#最小二乘法拟合曲线成直线的实例

    这篇文章主要介绍了C#最小二乘法拟合曲线成直线的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论