本文主要记录下其他简单LINQ表达式,因为比较简单,记录下以后方便回忆,本文也会持续更新。
一些有用的LINQ扩展方法:
LINQ表达式 | 作用 | 是否延迟查询 |
Range | 生成指定范围内的整数的序列 | |
Repeat | 生成包含一个重复值的序列 | |
Skip | 跳过指定数量的元素,返回剩余元素 | 是 |
SkipWhile | 跳过满足条件的元素,直到不满足条件为止,然后返回剩余元素 | 是 |
Take | 获取指定数量的元素 | 是 |
TakeWhile | 获取满足条件的元素,直到不满足添加为止,然后返回满足条件的元素 | 是 |
Where | 过滤掉数据中不匹配的元素 | 是 |
Select | 设计一个查询结果 | 是 |
SelectMany | 把每个数据项投射到一个条目序列之中,然后把所有这些结果序列连接成一个序列 | 是 |
Reverse | 反转数据源中数据项的顺序 | 是 |
OrderBy | 基于lambda表达式返回的值对源数据进行排序 | 是 |
OrderByDescending | 基于lambda表达式返回的值对源数据进行排序 | 是 |
ALL | 如果源数据中的所有元素都与谓词匹配,则返回true | 否 |
Any | 如果源数据中至少有一个元素与谓词匹配,则发挥true | 否 |
Contains | 如果源数据含有指定的元素或值,则返回true | 否 |
Count | 返回数据源中的元素数量 | 否 |
First | 返回数据源中的第一个元素 | 否 |
FirstOrDefault | 返回数据源中的第一个元素,如果没有,则返回默认值 | 否 |
Last | 返回数据源中的最后一个元素 | 否 |
LastOrDeafult | 返回数据源中的最后一个元素,如果没有,则返回默认值 | 否 |
Max | 返回lambda表达式的最大值 | 否 |
Min | 返回lambda表达式的最小值 | 否 |
Single | 返回数据源的第一个元素,没有或者多个匹配是抛出异常 | 否 |
SingleOrDefault | 返回数据源的第一个元素,没有时返回默认值,多个匹配则抛出异常 | 否 |
Sum | 对选定的值进行求和 | 否 |
ToArray ToDictionary ToList | 把数据源转化成数组或者其他集合类型 | 否 |
测试代码如下图所示:
static void Main(string[] args)
{List<Phone> PhoneLists = new List<Phone>(){new Phone { Country = "中国", City = "北京", Name = "小米" },new Phone { Country = "中国",City = "北京",Name = "华为"},new Phone { Country = "中国",City = "北京",Name = "联想"},new Phone { Country = "中国",City = "台北",Name = "魅族"},new Phone { Country = "日本",City = "东京",Name = "索尼"},new Phone { Country = "日本",City = "大阪",Name = "夏普"},new Phone { Country = "日本",City = "东京",Name = "松下"},new Phone { Country = "美国",City = "加州",Name = "苹果"},new Phone { Country = "美国",City = "华盛顿",Name = "三星"},new Phone { Country = "美国",City = "华盛顿",Name = "HTC"}};Console.WriteLine("Range结果如下所示:");IEnumerable<int> s = Enumerable.Range(1, 10);foreach (var list in s){Console.Write(list + ",");}Console.WriteLine();Console.WriteLine("Repeat结果如下所示:");IEnumerable<Phone> Repeat = Enumerable.Repeat(PhoneLists.FirstOrDefault(),5);foreach (var list in Repeat){Console.WriteLine($"{list.Country} -- {list.City} --{list.Name}");}var sLists = PhoneLists.Skip(3);Console.WriteLine("Skip结果如下所示:");foreach (var list in sLists){Console.WriteLine($"{list.Country} -- {list.City} --{list.Name}");}Console.WriteLine("SkipWhile结果如下所示:");var swLists = PhoneLists.SkipWhile(p => p.Country.Equals("日本"));foreach (var list in swLists){Console.WriteLine($"{list.Country} -- {list.City} --- {list.Name}");}Console.WriteLine("Take结果如下所示:");var tLists = PhoneLists.Take(3);foreach (var list in tLists){Console.WriteLine($"{list.Country} -- {list.City} --- {list.Name}");}Console.WriteLine("TakeWhile结果如下图所示:");var twLists = PhoneLists.TakeWhile(p => p.Country.Equals("中国"));foreach (var list in twLists){Console.WriteLine($"{list.Country} -- {list.City} --- {list.Name}");}Console.Read();
}
输出结果如下图所示: