List<>常用方法测试

需要添加的引用

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();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值