需要添加的引用
using System.Linq;
using System.Collections.Generic;
//方法Skip跳过序列中指定数量的元素,然后返回剩余的元素。
List<int> t1 = new List<int> { 1, 2, 3, 4 };
t1 = t1.Skip(2).ToList();
Console.WriteLine(string.Join(",", t1));
Console.ReadLine();
结果:3,4
//方法SkipWhile如果指定的条件为 true,则跳过序列中的元素,然后返回剩余的元素。
List<int> t1 = new List<int> { 5, 7, 1, 5, 6 };
Console.WriteLine(string.Join(",", t1.SkipWhile(p => p > 2).ToList()));
Console.WriteLine(string.Join(",", t1.OrderByDescending(p=>p).SkipWhile(p => p > 2).ToList()));
Console.ReadLine();
结果:
1,5,6
1
//方法Take从序列的开头返回指定数量的相邻元素。
List<int> t1 = new List<int> { 1, 2, 3, 4 };
t1 = t1.Take(2).ToList();
Console.WriteLine(string.Join(",", t1));
Console.ReadLine();
结果:1,2
//方法TakeWhile如果指定的条件为 true,则返回序列中的元素,然后跳过剩余的元素。
List<int> t1 = new List<int> { 5, 7, 1, 5, 6 };
Console.WriteLine(string.Join(",", t1.TakeWhile(p => p > 2).ToList()));
Console.WriteLine(string.Join(",", t1.OrderByDescending(p=>p).TakeWhile(p => p > 2).ToList()));
Console.ReadLine();
结果:
5,7
7,6,5,5
//方法Append和方法Prepend对比
List<int> t1 = new List<int> { 1, 2, 3, 4 };
Console.WriteLine(string.Join(",", t1.Append(5)));//方法Append将新值添加到末尾
Console.WriteLine(string.Join(",", t1));//Append并不能改变t1
Console.WriteLine(string.Join(",", t1.Prepend(0)));//方法Prepend将新值添加到开头
Console.WriteLine(string.Join(",", t1));//Prepend并不能改变t1
List<int> t2 = t1.Append(4).ToList();//想得到Append改变后的结果,只能将其赋值给新的t2
Console.WriteLine(string.Join(",", t2));
Console.ReadLine();
结果:
1,2,3,4,5
1,2,3,4
0,1,2,3,4
1,2,3,4
1,2,3,4,4
//方法Add,添加值到序列末尾,会改变序列。
List<int> t1 = new List<int> { 1, 2, 3, 4 };
t1.Add(5);//同样是将新值添加到末尾,方法Add会改变t1
Console.WriteLine(string.Join(",", t1));
Console.ReadLine();
结果:1,2,3,4,5
//方法Sum获取总和。
//方法Average获取平均值。
//方法Max返回序列最大值。
//方法Min返回序列最小值。
List<int> t1 = new List<int> { 1, 2, 3, 4 };
Console.WriteLine(t1.Sum().ToString());//方法Sum获取总和
Console.WriteLine(t1.Average().ToString());//方法Average获取平均值
Console.WriteLine(t1.Max());//方法Max返回序列最大值。
Console.WriteLine(t1.Min());//方法Min返回序列最小值。
Console.ReadLine();
结果:
10
2.5
4
1
//方法Reverse反转值序列
//方法Sort升序排列序列
List<int> t1 = new List<int> { 1, 2, 4, 3 };
t1.Reverse();//反转值序列
Console.WriteLine(string.Join(",", t1));
t1.Sort();//升序排列序列
Console.WriteLine(string.Join(",", t1));
Console.ReadLine();
结果:
3,4,2,1
1,2,3,4
//方法First和方法Last
List<int> t1 = new List<int> { 1, 2, 4, 3,5 };
Console.WriteLine(t1.First());//返回序列中的第一个元素。
Console.WriteLine(t1.First(p => p > 3));//返回序列中满足指定条件的第一个元素。
Console.WriteLine(t1.Last());//返回序列中的最后一个元素。
Console.WriteLine(t1.Last(p => p < 5));//返回序列中满足指定条件的最后一个元素。
Console.ReadLine();
结果:
1
4
5
3
//方法Intersect,方法Except,方法Union对比
List<int> t1 = new List<int> { 1, 2, 4, 3, 5, 2, 2 };
List<int> t2 = new List<int> { 4, 2, 6, 2 };
//方法Intersect生成两个序列的交集。即t1和t2都有的元素。
Console.WriteLine(string.Join(",", t1.Intersect(t2).ToList()));
//方法Excep生成两个序列的差集。即从t1中排出t2有的元素。
Console.WriteLine(string.Join(",", t1.Except(t2).ToList()));
//方法Union生成两个序列的并集。即包含t1和t2所有的元素。
Console.WriteLine(string.Join(",", t1.Union(t2).ToList()));
Console.ReadLine();
结果:
2,4
1,3,5
1,2,4,3,5,6
//方法Concat连接两个List,结果想要得到List,需要转换。也可以转换为其他。
List<int> t1 = new List<int> { 1, 2, 4, 3};
List<int> t2 = new List<int> { 4, 2, 6};
Console.WriteLine(string.Join(",", t1.Concat<int>(t2).ToList()));
Console.ReadLine();
结果:1,2,4,3,4,2,6
//方法Contain,确定序列是否包含指定的元素。
List<int> t1 = new List<int> { 1, 2, 4, 3};
Console.WriteLine(t1.Contains(4).ToString());
Console.ReadLine();
结果:True
//方法Count返回序列中的元素数量。
List<int> t1 = new List<int> { 1, 2, 4, 3, 5, 6 };
Console.WriteLine(t1.Count.ToString());
//返回序列中指定条件的元素数量。这里是大于4的数。
Console.WriteLine(t1.Count<int>(p => p > 4));
Console.ReadLine();
结果:
6
2
//方法Distinct返回序列中的非重复元素。
List<int> t1 = new List<int> { 1, 2, 4, 2, 5, 1 };
Console.WriteLine(string.Join(",", t1.Distinct<int>().ToList()));
Console.ReadLine();
结果:1,2,4,5
//方法返回序列中指定索引处的元素。两句相同,索引从0开始。
List<int> t1 = new List<int> { 1, 2, 4, 5 };
Console.WriteLine(t1.ElementAt(0));
Console.WriteLine(t1[0]);
Console.ReadLine();
结果:
1
1
//方法Select将序列中的每个元素投影到新表单。
List<int> t1 = new List<int> { 1, 2, 4 };
Console.WriteLine(string.Join(",", t1.Select(p => p * p).ToList()));
Console.ReadLine();
结果:1,4,16
//方法Single返回序列中满足条件的单个特定元素。
//当序列不只包含一个满足条件的元素时,或不存在满足条件的元素时,会报错。
List<int> t1 = new List<int> { 1, 2, 4 };
Console.WriteLine(t1.Single(p => p > 2));
Console.ReadLine();
结果:4
//方法SingleOrDefault返回序列中满足条件的单个特定元素。
//当序列不存在一个满足条件的元素时,返回默认值。
//当序列不只包含一个满足条件的元素时,会报错。
List<int> t1 = new List<int> { 1, 2, 4 };
Console.WriteLine(t1.SingleOrDefault(p => p > 4));
Console.WriteLine(t1.SingleOrDefault(p => p > 2));
List<string> t2 = new List<string> { "a", "bc", "def", "ghij", "klmno", "pqrstu" };
Console.WriteLine(t2.SingleOrDefault(p => p.Length > 5));
string s = t2.SingleOrDefault(p => p.Length > 6);
Console.WriteLine(string.IsNullOrEmpty(s)?"default":s );
Console.ReadLine();