最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

世界新消息丨C#高级编程2

来源:博客园

LINQ操作符总结


(资料图片仅供参考)

分类

操作符

说明

条件类

Where

用lambda表达式作为查询条件names.Where(n => n.StartsWith("J"))

OfType

按照数据类型进行查询,

选择类

Select

names.Where(n => n.StartsWith("J")).OrderBy(n => n).Select(n => n)

SelectMany

二级选择,从中间选择结果中进行进一步选择

排序类

OrderBy

按照某个字段或属性进行排序

ThenBy

二级排序,先按照某个字段进行排序,然后按照另一个字段再次裴谞

OrderByDecending

降序排序

ThenByDecending

二级排序,降序

Reverse

反转顺序,倒序

合并类

Join

合并不直接相关的集合

GroupJoin

连接两个集合,组合其结果

分组类

GroupBy

分组from book in Books group book by book.Publisher into grouping

ToLookup

通过创建一对多字典,来组合元素

布尔类

Any

任意一个元素满足条件,就返回true

All

所有元素均满足条件,才返回true

Contains

包含某个元素,就返回true

分区类

Take

获得指定数量的结果

Skip

跳过指定数量的结果

TakeWhile

获取满足指定条件的,指定个数的结果

SkipWhile

跳过满足指定条件的,指定个数的结果

复合类

Distinct

删除重复元素,去重

Union

合并两个集合并去重,相当于先并集再去重

Intersect

交集

Zip

并集

Except

差集

索引类

First

满足条件的第一个元素

FirstOrDefault

满足条件的第一个元素,如果找不到,就返回元素的默认值

Last

满足条件的最后一个元素

LastOrDefault

满足条件的最后一个元素,如果找不到,就返回元素的默认值

ElementAt

按照索引查找元素

ElementAtOrDefault

按照索引查找元素,如果找不到,就返回元素的默认值

Single

只返回一个满足条件的元素,如果找到多个,就抛出异常

SingleOrDefault

只返回一个满足条件的元素,如果找不到,就返回元素的默认值

统计类

Count

元素个数

Sum

所有元素求和var query = nums.Sum(i => (long)i);

Min

最小值

Max

最大值

Average

平均值

Aggregate

总计 int[] numbers = new int[] { 1, 2, 3, 4 };

转换类

ToArray

转换为数组

AsEnumerable

转换为IEnumerable子类

ToList

转换为IList子类

ToDictionary

转换为IDictionary子类

Cast

转换为指定类型

初始类

Empty

生成一个空集合

Range

生成一系列数字

Repeate

生成一个元素都是同一个值的集合

Linq查询的延迟执行

using System;using System.Collections.Generic;using System.Linq;namespace ConsoleCore230207{    class Program    {        static void Main(string[] args)        {            DeferredQuery();            DeferredQuery2();        }        //延迟查询函数 Linq表达式形式        static void DeferredQuery()        {            //定义一个集合            var names = new List { "Bert", "Jack", "Rose", "Tom" };            //定义Linq表达式 此时仅仅定义了表达式,而未执行            //Linq表达式在遍历时才执行            //{System.Linq.OrderedEnumerable}            var namesWithJ = from n in names where (n.StartsWith("J")) orderby n select n;            Console.WriteLine("第1次遍历:");            //遍历时,执行Linq表达式            foreach (var item in namesWithJ)            {                Console.WriteLine(item);            }            names.Add("Json");            names.Add("Jerry");            names.Add("Job");            Console.WriteLine("第2次遍历:");            //遍历时,再次执行Linq表达式,此次输出更新集合上的查询结果            foreach (var item in namesWithJ)            {                Console.WriteLine(item);            }        }        //扩展方法式的 延迟查询        static void DeferredQuery2()        {            //定义一个集合            var names = new List { "Bert", "Jack", "Rose", "Tom" };            //扩展方法形式的Linq查询            //Linq查询的扩展方法在遍历时才执行            //namesWithJ的数据类型是枚举器{System.Linq.Enumerable.SelectIPartitionIterator}            var namesWithJ = names.Where(n => n.StartsWith("J")).OrderBy(n => n).Select(n => n);            Console.WriteLine("第1次遍历:");            //遍历时,执行Linq表达式            foreach (var item in namesWithJ)            {                Console.WriteLine(item);            }            names.Add("Json");            names.Add("Jerry");            names.Add("Job");            Console.WriteLine("第2次遍历:");            //遍历时,再次执行Linq表达式,此次输出更新集合上的查询结果            foreach (var item in namesWithJ)            {                Console.WriteLine(item);            }        }        //两种方法的输出结果相同;表达式形式和扩展方法形式的Linq查询,是等价的;        //第1次遍历:        //Jack        //第2次遍历:        //Jack        //Jerry        //Job        //Json    }}

#end

关键词: 满足条件 数据类型 索引查找