• c# List 所有操作方法例子


    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Console.ForegroundColor = ConsoleColor.White;
                //Console.BackgroundColor = ConsoleColor.Red;
                //Console.Title = "A simple SER";
                ////Console.ResetColor();
                //Console.WriteLine("44sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss44");
                //Console.Title = "A simple SER";
                //Console.ForegroundColor = ConsoleColor.Black;
                //Console.BackgroundColor = ConsoleColor.White;
                //Console.WriteLine("44yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy44");
                ListMethod();
            }
    
    
            public static void ListMethod()
            {
                List<string> strList = new List<string>() { "Able", "was", "I", "ere", "I", "saw", "Elba" };
                List<int> numList = new List<int>() { 45, 3, 33, 66 };
                List<Person> persons1 = new List<Person>();  
                persons1.Add(new Person("张三", "男", 20, 1500));  
                persons1.Add(new Person("王成", "男", 32, 3200));  
                persons1.Add(new Person("李丽", "女", 19, 1700));  
                persons1.Add(new Person("何英", "女", 35, 3600));  
                persons1.Add(new Person("何英", "女", 18, 1600)); 
                #region Aggregate
                //var sum = numList.Aggregate((i, j) => i + j); //将list中的元素累加
                //var str1 = strList.Aggregate((i, j) => i + " " + j); //将list中的元素累加
    
                ////Aggregate求前100的和
                //var list = Enumerable.Range(1, 100);
                //var result = list.Aggregate((a, b) => (a + b));
                //Console.WriteLine(string.Format("1到100的和为{0}", result));
                //var invalidFileName = Path.GetInvalidFileNameChars();
                //var replaceResult = invalidFileName.Aggregate("study<Aggregate>first", (accmulate, r) => (accmulate.Replace(r, '-')));
                //Console.WriteLine(replaceResult);
                ////numList中的元素是否都大于2
                //#endregion
                //#region All
                //bool t1 = numList.All<int>(x => x > 2); //输出true
                //#endregion
                //#region Any
                //bool t2 = numList.Any<int>(x => x > 3);
                //#endregion
                //#region AsEnumerable
                //var t3 = numList.AsEnumerable<int>();
                //#endregion
                //#region AsParallel并发
                //var t4 = numList.AsParallel().Where(x => x > 1);
                //foreach (var item in t4)
                //{
                //    Console.WriteLine(item);
                //}
                //#endregion
                //#region  AsQueryable
                //var t5 = numList.AsQueryable<int>();
                //#endregion
                //#region  AsQueryable和AsEnumerable
                ////            AsQueryable是在数据库中查询再返回数据,AsEnumerable是从数据库读取全部数据再在程序中查询,其效果和ToList相同。 
                ////总结一下就是用AsQueryable性能会更加优点,但是当需要所有的数据的时候用AsEnumerable更加合适。
                //#endregion
                //#region AsReadOnly转成只读形式
                //var t6 = numList.AsReadOnly();
                //#endregion
                //#region Average计算平均值
                //double t7 = numList.Average();
                //var t8 = numList.Average<int>(x => x);
    
                //#endregion
                //#region BinarySearch  先对元素排序然后进行2分查找
                //numList.Sort();
                //var t9 = numList.BinarySearch(3);
                //#endregion
                //#region Capacity分配的内存
                ////            当我们使用List<T> list = new List<T>();实例化一个List对象是,.Net Framework只是在内存中申请了一块内存在存放list对象本身,系统此时并不知道list会有多少item元素。当我们向list添加第一个item时,list会申请能存储4个Item元素的存储空间,此时Capacity是4,但是当我们添加到第五个item时,此时的Capacity就会变成8,也就是当list发现元素的总数大于Capacity数量时,会主动申请并重新分配内存,当我们添加到第九个item时,Capacity不是12而是16,也就是说list每次申请的内存数量都是之前item元素数量两倍。然后将当前所有的item元素系但添加的元素复制到新的内存。
    
                ////大家可以看到,如果list需要添加的元素特别多时,list会不断地申请心内存,复制已有元素和新加元素到新内存,这个过程会产生资源的浪费及性能问题。
    
                ////如果当设置的Capacity值远大于list的实际元素数量时,应使用TrimExcess()方法释放点未使用的内存。
                //numList.Add(1);
                //numList.Add(1);
                //Console.WriteLine(numList.Capacity);
                //numList.TrimExcess();
                //Console.WriteLine(numList.Capacity);
    
                //#endregion
                //#region Cast<T>()用来将非泛型的序列转换为泛型的序列
                ////比如数组取处大于2的数字
                //int[] num = new int[] { 21, 2, 4, 5 };
                //var t = num.Cast<int>().Where(x => x > 2);
    
                //foreach (var item in t)
                //{
                //    Console.WriteLine(item);
                //}
                //num = t.ToArray();// 新数组
                //#endregion
                //#region 移除所有元素
                ////numList.Clear();
                //#endregion
                //#region Concat合并两个列表
                //var newlist = numList.Concat(numList).Where(x => x > 4).ToList().Distinct().ToList();//Concat合并两个列表 大于3的元素 最后去除重复数据
                //#endregion
                //#region Contains列表是否包含元素
                //var re = numList.Contains(3);
                //re = numList.Contains<int>(3);
                //#endregion
                //#region ConvertAll列表的类型转换
                //var itos = numList.ConvertAll<string>(x => x.ToString());
                //#endregion
                //#region CopyTo从目标数组的开头开始,将整个 List<T> 复制到兼容的一维数组。
                //int[] array = new int[15];
                //numList.CopyTo(array);
                //foreach (var item in array)
                //{
                //    Console.WriteLine(item);
                //}
                //#endregion
                //#region Count元素个数
                //var c1 = numList.Count<int>();
                //c1 = numList.Count();
                //#endregion
                //#region DefaultIfEmpty如果列表为空设置默认值
                //List<int> list2 = new List<int>();
                //var list3 = list2.DefaultIfEmpty(34);
                //list3.ToList().ForEach(x => Console.WriteLine(x.ToString() + "233"));
                //#endregion
                //#region ElementAt返回指定索引处的元素
                //var n = numList.ElementAt(0);
                //n = numList.ElementAt<int>(0);
                //n = numList.ElementAtOrDefault<int>(14); //如果超出索引范围返回默认值0
    
                //#endregion
                //#region 判断object是否相同包括地址
                //List<int> a1 = new List<int>() { 1, 2, 3, 4 };
                //List<int> b1 = new List<int>() { 1, 2, 3, 4 };
                //var c2 = b1;
    
                //var re2 = b1.Equals(c2);
                //#endregion
                //#region Except 取差集(A有,B沒有)
    
    
                //List<int> A = new List<int> { 1, 2, 3, 5, 9 };
    
                //List<int> B = new List<int> { 4, 3, 9 };
    
                //var expectedList = A.Except(B).ToList();
                #endregion
                #region Exists列表中是否存在元素,如果第一个元素符合停止查找返回bool值
                var res = numList.Exists(x => x > 3);
    
                #endregion 
                #region Find 发现符合条件的元素返回第一个,如果没有发现返回0
                var t2=numList.Find(x => x > 3);
                #endregion
                #region FindAll返回集合
                var t3 = numList.FindAll(x => x > 5);
                #endregion
                #region FindIndex 如果找到与 match 定义的条件相匹配的第一个元素,则为该元素的从零开始的索引;否则为 -1。
                var t4 = strList.FindIndex(x => x == "Elba");
                var t5 = strList.FindIndex(2,x => x == "was");
                #endregion
                #region FindLast,FindLastIndex返回最后一个元素,索引用法同上               
    
                #endregion
                #region First返回满足条件的第一个元素,FirstOrDefault返回满足条件的第一个元素,如果没找到返回默认值
                var t8=  numList.FirstOrDefault(x => x <3);  //未找到返回默认值0
                #endregion
                #region ForEach 对每个元素执行操作返回值void
                //numList.ForEach(x =>Console.WriteLine(x*2));
    
                #endregion
                #region GetEnumerator迭代器属性可以用MoveNext和Current来实现foreach的效果
                var t11=numList.GetEnumerator();
                #endregion
                #region GetHashCode获取hash值
                var t12=numList.GetHashCode();
                #endregion
                #region GetRange创建元素的副本,更改其元素,原列表不变。
                var newList= numList.GetRange(1,3);
                newList.Add(666);
               // numList.ForEach(x=> Console.WriteLine(x));
                #endregion
                #region GetType 获取实例
                var t13 = numList.GetType();
                var type13 = t13.GetProperties(); ////返回t13的所有公共属性
                #endregion
                #region GroupBy对元素进行分组
                var ls = persons1.GroupBy(a => a.Name).Select(g => (new { name = g.Key, count = g.Count(), ageC = g.Sum(item => item.Age), moneyC = g.Sum(item => item.Money) })).ToList();
                #endregion
                 // 后续
    
                Console.ReadKey();
    
    
            }
        }
        /// <summary>  
        /// 手动设计一个Person类。用于放到List泛型中  
        /// </summary>  
        public class Person
        {
            public string Name { get; set; }
            public int Age { get; private set; }
            public string Sex { get; set; }
            public int Money { get; set; }
    
            public Person(string name, string sex, int age, int money)
            {
                this.Name = name;
                this.Age = age;
                this.Sex = sex;
                this.Money = money;
            }
        }  
    }
    

      

  • 相关阅读:
    Ubuntu 各版本的几个国内更新源
    input只读属性 设置和移除 选择数字
    安装mysql驱动之 mysqlclient 出现的报错处理(ubuntu16.04)
    ubuntu16.04 安装 python3.6, 并创建虚拟环境(使用python3.6)
    python tornado 中使用 flash消息闪现
    ubuntu查看mysql版本的几种方法
    Ubuntu 下查看已安装的软件
    python ORM
    3、MongoDB的使用
    2、MongoDB安装
  • 原文地址:https://www.cnblogs.com/c-x-a/p/7793948.html
Copyright © 2020-2023  润新知