.NET C#基础教程第27天:LINQ数据查询

作者:微信公众号:【架构师老卢】
6-10 10:58
32

概述:介绍本文演示如何使用查询和方法语法编写 LINQ 查询。除此之外,还强调了为什么在复杂查询的情况下,查询语法比方法语法更受欢迎。学习目标什么是查询和方法语法为什么首选查询语法开发人员的先决条件基本了解 C# 编程语言。熟悉 LINQ开始在深入研究之前,让我们先了解一下 LINQ 的每种语法。方法语法它是用于编写使用扩展方法和 lambda 表达式的查询的语法之一。var query = items.Where(item = item.IsActive)                  .Select(item = new { item.Name, item.Id });随着查询在本质上变得

介绍

本文演示如何使用查询和方法语法编写 LINQ 查询。除此之外,还强调了为什么在复杂查询的情况下,查询语法比方法语法更受欢迎。

学习目标

  • 什么是查询和方法语法
  • 为什么首选查询语法

开发人员的先决条件

  • 基本了解 C# 编程语言。
  • 熟悉 LINQ

开始

在深入研究之前,让我们先了解一下 LINQ 的每种语法。

方法语法

它是用于编写使用扩展方法和 lambda 表达式的查询的语法之一。

var query = items.Where(item => item.IsActive)  
                 .Select(item => new { item.Name, item.Id });

随着查询在本质上变得更加复杂,语法不可读。

查询语法

它是使用复杂筛选、分组和联接操作编写查询的第二种语法。

var query = from item in items  
            where item.IsActive  
            select new { item.Name, item.Id };

上述语法与SQL查询结构非常相似,这使得它更易于理解、可读和可维护。

为什么首选查询语法

考虑一个示例,其中我们需要联接两个集合,过滤它们并将它们映射到新类型中。让我们使用这两种语法来解决上述问题语句。

方法语法

以下实现似乎更加密集和复杂。

var query = items.Join(otherCollection,  
                       item => item.Key,  
                       other => other.Key,  
                       (item, other) => new { item.Name, other.Description })  
                 .Where(x => x.Description.Contains("specific keyword"))  
                 .Select(x => new { x.Name, x.Description });

查询语法

使用查询语法重写相同的查询可使其更具可读性和可理解性。

var query = from item in items  
            join other in otherCollection on item.Key equals other.Key  
            where other.Description.Contains("specific keyword")  
            select new { item.Name, other.Description };

完整代码

创建另一个名为的类,并添加以下代码片段QueryVsMethod

public static class QueryVsMethod
{
    static List<Item> items = new List<Item>
    {
        new Item { Id = 1, Name = "Item1", IsActive = true },
        new Item { Id = 2, Name = "Item2", IsActive = false },
        new Item { Id = 3, Name = "Item3", IsActive = true }
    };
    public static void QuerySyntax()
    {
        // Method Syntax
        var methodSyntaxQuery = items.Where(item => item.IsActive)
                                      .Select(item => new { item.Name, item.Id });
        Console.WriteLine("Method Syntax Results:");
        foreach (var item in methodSyntaxQuery)
        {
            Console.WriteLine($"Name: {item.Name}, Id: {item.Id}");
        }
    }
    public static void MethodSyntax()
    {
        // Query Syntax
        var querySyntaxQuery = from item in items
                               where item.IsActive
                               select new { item.Name, item.Id };
        Console.WriteLine("\nQuery Syntax Results:");
        foreach (var item in querySyntaxQuery)
        {
            Console.WriteLine($"Name: {item.Name}, Id: {item.Id}");
        }
    }
}

并创建一个模型类,如下所示


class Item  
{  
    public int Id { get; set; }  
    public string Name { get; set; }  
    public bool IsActive { get; set; }  
}

从 main 方法执行,如下所示

#region Day 27: Query vs Method Syntax  
static string ExecuteDay27()  
{  
    QueryVsMethod.MethodSyntax();  
    QueryVsMethod.QuerySyntax();  
  
    return "Executed Day 27 successfully..!!";  
}  
  
#endregion

控制台输出

Query Syntax Results:  
Name: Item1, Id: 1  
Name: Item3, Id: 3  
Method Syntax Results:  
Name: Item1, Id: 1  
Name: Item3, Id: 3

源代码获取:公众号回复消息【code:74360

相关代码下载地址
重要提示!:取消关注公众号后将无法再启用回复功能,不支持解封!
第一步:微信扫码关键公众号“架构师老卢”
第二步:在公众号聊天框发送code:74360,如:code:74360 获取下载地址
第三步:恭喜你,快去下载你想要的资源吧
阅读排行