C# Linq 详解三

这篇具有很好参考价值的文章主要介绍了C# Linq 详解三。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

概述

十三、Sum / Min / Max / Average

十四、Distinct

十五、Concat

十六、Join

十七、ToList 

十八、ToArray

十九、ToDictionary


C# Linq 文档(一)
1.Where,2.Select,3.GroupBy,4.First / FirstOrDefault,5.Last / LastOrDefault

C# Linq 文档(二)
1.OrderBy ,2.OrderByDescending,3.Skip,4.Take,5.Any,6.All

C# Linq 文档(三)
1.Sum / Min / Max / Average,2.Distinct,3.Concat,4.Join,5.ToList ,6.ToArray,7.ToDictionary

C# Linq 文档(四)
1.SelectMany,2.Aggregate,3.DistinctBy,4.Reverse,5.SequenceEqual,6.Zip,7.SkipWhile ,8.TakeWhile

C# Linq 文档(一)_熊思宇的博客-CSDN博客

C# Linq 文档(二)_熊思宇的博客-CSDN博客

C# Linq 文档(四)_熊思宇的博客-CSDN博客


概述

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。 此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。

对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。 查询表达式采用声明性查询语法编写而成。 使用查询语法,可以用最少的代码对数据源执行筛选、排序和分组操作。 可使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据。
 

十三、Sum / Min / Max / Average

计算序列中指定属性的总和、最小值、最大值、平均值。

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            int sum = numList.Sum();
            Console.WriteLine("总和:{0}", sum);

            int min = numList.Min();
            Console.WriteLine("最小值:{0}", min);

            int max = numList.Max();
            Console.WriteLine("最大值:{0}", max);

            double average = numList.Average();
            Console.WriteLine("平均值:{0}", average);

            Console.ReadKey();
        }
    }
}

运行:

C# Linq 详解三,C#,c#,linq

在上面案例中的数据结构比较简单,如果是使用类对象,依然也是没问题的,写法大同小异

List<Student> students = new List<Student>
{
    new Student { Id = 1, Name = "柱子" },
    new Student { Id = 2, Name = "李四" },
    new Student { Id = 4543, Name = "铁蛋" }
};

int max = students.Max(p => p.Id);
Console.WriteLine($"max:{max}");

运行:

C# Linq 详解三,C#,c#,linq

十四、Distinct

Distinct 方法用于从集合中筛选出不重复的元素。它返回一个新的集合,其中包含原始集合中的唯一元素。

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int[] numList = { 1, 2, 2, 3, 3, 4, 5, 5 };
            var distinctNumbers = numList.Distinct();
            foreach (var number in distinctNumbers)
            {
                Console.WriteLine(number);
            }

            Console.ReadKey();
        }
    }
}

运行:

C# Linq 详解三,C#,c#,linq

十五、Concat

Concat 方法用于将两个集合合并为一个新的集合。当前方法没有重载函数,通常用在将数组分类后,挑出需要的集合,合并后重新处理。

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int[] numbers1 = { 1, 2, 3 };
            int[] numbers2 = { 4, 5, 6 };
            var mergedNumbers = numbers1.Concat(numbers2);
            foreach (var number in mergedNumbers)
            {
                Console.WriteLine(number);
            }

            Console.ReadKey();
        }
    }
}

运行:

C# Linq 详解三,C#,c#,linq

十六、Join

根据两个序列中的关联键,将它们的元素进行匹配。

Join 的用法,在 Linq 中算是比较复杂的了,用起来变化也比较多,这里用一个简单的例子,推荐各位多写多练,多写一些案例,用多了就比较熟了

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<Student> students1 = new List<Student>
            {
                new Student { Id = 1, Name = "柱子" },
                new Student { Id = 2, Name = "李四" },
                new Student { Id = 3, Name = "铁蛋" }
            };
            List<Student> students2 = new List<Student>
            {
                new Student { Id = 1, Name = "张三" },
                new Student { Id = 3, Name = "狗剩" },
                new Student { Id = 5, Name = "二狗" }
            };

            var joinedStudents = students1.Join(students2,
                                                s1 => s1.Id,
                                                s2 => s2.Id,
                                                (s1, s2) => new 
                                                { 
                                                    Name1 = s1.Name, 
                                                    Name2 = s2.Name 
                                                });

            foreach (var student in joinedStudents)
            {
                Console.WriteLine($"Name1: {student.Name1}, Name2: {student.Name2}");
            }

            Console.ReadKey();
        }
    }

    class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

运行:

C# Linq 详解三,C#,c#,linq

在上面 Join 的代码中,首先看下面这两句代码,这里是在两个 List 中,找出一个共同的键,比如 s1 和 s2 都有一个共同的键 Id,这里会判断 Id 的值在两个 List 中是否有相同的值,它查询的结果同样是个集合,在上面代码可以看到,Id 有两个共同的值,1 和 3。

s1 => s1.Id,
s2 => s2.Id,

下面代码是一个 Lambda 表达式,它将 s1 和 s2 作为参数传递到了一个新的对象中,Name1 和 Name2 都是自己定义的字段名,这里可以随意取名字

(s1, s2) => new 
{ 
    Name1 = s1.Name, 
    Name2 = s2.Name 
});

比如,取名成这样,也是不会报错的

C# Linq 详解三,C#,c#,linq

找出相同字段的集合后,就可以在这个 Lambda 表达式里重新筛选数据了,我们把鼠标放到 joinedStudents 这里,可以看到是一个叫 'a 的类,这就是上面我们自定义的类

C# Linq 详解三,C#,c#,linq

十七、ToList 

将序列转换为List

在上面的很多案例都可以将查询的结果转换为 List,下面来看一个案例,非常简单

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            List<int> list = numList.Where(x => x > 40).ToList();
            foreach (int num in list)
            {
                Console.WriteLine(num);
            }
            Console.ReadKey();
        }
    }
}

运行:

C# Linq 详解三,C#,c#,linq

十八、ToArray

将序列转换为Array

ToArray 和 ToList 用法差不多的,只是转换的结果不一样

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> numList = new List<int> { 1, 4, 5, 24, 43, 67, 12, 90, 15 };
            int[] ints = numList.Where(x => x > 40).ToArray();
            foreach (int num in ints)
            {
                Console.WriteLine(num);
            }
            Console.ReadKey();
        }
    }
}

运行:

C# Linq 详解三,C#,c#,linq

十九、ToDictionary

根据指定的键选择器,将序列转换为字典。

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<People> peopleList = new List<People>()
            {
                new People(){Name="张三", Age=12, Career="学生" },
                new People(){Name="柱子", Age=25, Career="农民" },
                new People(){Name="铁蛋", Age=23, Career="农民" },
                new People(){Name="狗剩", Age=34, Career="职员" },
                new People(){Name="二狗", Age=28, Career="职员" },
            };
            Dictionary<string, People> peopleDictionary = peopleList.ToDictionary(x => x.Name);
            foreach (var kvp in peopleDictionary)
            {
                Console.WriteLine($"Key: {kvp.Key}, Value.Age: {kvp.Value.Age}");
            }

            Console.ReadKey();
        }
    }

    class People
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Career { get; set; }
    }
}

运行:

C# Linq 详解三,C#,c#,linq

end文章来源地址https://www.toymoban.com/news/detail-563650.html

到了这里,关于C# Linq 详解三的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# Linq 学会使用,学会自己编写Linq

    Linq我暂时理解为,一种内置的非常方便的数据查询的工具 我们先学习它的使用 //数据类 //新建了一个List数据,用来测试数据查询  //现在定义一个需求,需要查出 id2 的数据 引用Linq的命名空间  引用命名空间之后,我们的list对象,拥有了一个扩展方法,Where (扩展方法,在之前的博客

    2024年02月06日
    浏览(32)
  • C# Lambda,LINQ

    Lambda表达式和LINQ语句都是C#中用于查询和筛选数据的工具,但它们有一些异同点。 异同点: 1. 语法不同: Lambda表达式是一种匿名函数 ,它可以用于创建委托或表达式树。而LINQ语句是一种查询语句,它使用特定的和语法来查询数据。 2. 功能不同: Lambda表达式可以用于

    2024年02月09日
    浏览(309)
  • C# LINQ,SQL

    C#中的LINQ和SQL都是用于查询数据的工具,但它们有以下异同点: 异同点: 1. LINQ和SQL都可以用于查询数据,但LINQ是在C#中使用的语言集成查询,而SQL是一种独立的查询语言。 2. LINQ和SQL都支持基本的查询操作,如选择、过滤、排序和分组。 3. LINQ和SQL都支持连接多个表,但LI

    2024年02月10日
    浏览(28)
  • C#中的LINQ

    一:什么是LINQ LINQ代表语言集成查询,是.net框架的扩展,它允许我们用SQL查询数据库的方式来查询数据的集合 二:LINQ延迟查询的特性 延迟查询是指查询操作并不是在定义的时候执行,而是在遍历集合中的数据时才执行 因为作为yield迭代器的主体,只有使用foreach遍历执行到

    2023年04月09日
    浏览(32)
  • C#中LINQ的使用知多少?LINQ常功能整理,实例源代码解析

      LINQ(Language-Integrated Query)是C#语言中的一个强大的查询技术,它提供了一种统一的查询语法,可以用于查询和操作各种数据源,包括集合、数据库、XML等。下面详细描述了LINQ的20个功能点,并提供了相应的源代码。 查询集合中的所有元素: 使用条件过滤集合中的元素:

    2024年02月05日
    浏览(42)
  • 【C# 基础精讲】LINQ 基础

    LINQ(Language Integrated Query)是一项强大的C#语言特性,它使数据查询和操作变得更加简洁、灵活和可读性强。通过使用LINQ,您可以使用类似SQL的语法来查询各种数据源,如集合、数组、数据库等。本文将介绍LINQ的基础概念、常见的LINQ操作和示例,以及如何在C#中利用LINQ进行数

    2024年02月12日
    浏览(27)
  • C#高级编程 Linq介绍

    本文对C#高级编程部分的Linq查询进行介绍 目录 一、Linq起源 二 LINQ 操作组成 2.1数据源 2.2查询 3.3查询执行

    2024年02月11日
    浏览(30)
  • C#基础--Lambda和LINQ

    在.NetFramewok的不同版本都有不同的样子;在.NetCore下也都是支持的; 1.1 .Netframework1.0/1.1时代 1.2 .NetFramework2.0 匿名方法 增加了一个delegate, 可以访问到除了参数以外的局部变量 1.3 .NetFramework3.0 前期 去掉了delegate,添加了一个= goes to 1.4 .NetFramework3.0 后期 去掉了匿名

    2024年02月17日
    浏览(28)
  • C#版本LINQ增强开源库

    LINQ对应的中文名称是:语言集成查询,是对一系列直接将查询功能集成到C#语言技术的统称,我们最常用的场景是,用于数据库的查询功能。 在.Net中,本身对Objects也支持LINQ的扩展,但是对于一些特定的功能,就需要我们自己去扩展。 所以,今天给大家推荐一个LINQ扩展库,

    2023年04月13日
    浏览(30)
  • C#基础:利用LINQ进行复杂排序

    请你写出linq对表格排序, CODE=3排前面 ,其余按照 CODE降序 排序,CODE一样再按照 字母升序 排序 ID CODE VALUE A0001 1 A A0002 1 B A0003 1 C A0004 2 D A0005 2 E A0006 2 F A0007 3 G A0008 3 H A0009 3 I A0010 4 J 若再加大难度,ID=A0005的排第一,然后CODE=3排前面,其余按照CODE降序排序,再按照字母升序排

    2024年01月18日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包