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;
}
}
}

  

c# List 所有操作方法例子的更多相关文章

  1. Selenium 入门到精通系列:四

    Selenium 入门到精通系列 PS:鼠标右键.鼠标悬停.键盘操作方法 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019 ...

  2. Collection View Programming Guide for iOS---(五)---Incorporating Gesture Support

      Incorporating Gesture Support 结合手势支持 You can add greater interactivity to your collection views th ...

  3. C#File类常用的文件操作方法(创建、移动、删除、复制等)

    File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量很多时候都是路径path ...

  4. 例子:Background Audio Streamer Sample

    The Background Audio Streamer sample demonstrates how to create an app that uses a MediaStreamSource ...

  5. [转] shell字符串操作方法,以及实例

    每一种语言都有他独自的字符串操作方法,shell也一样,下面以以例子的方式,简单介绍常用方法. 1,取得字符串长度 string=abc12342341 //等号二边不要有空格 echo ${#str ...

  6. python字符串截取与替换的例子

    python字符串截取与替换的多种方法 时间:2016-03-12 20:08:14来源:网络 导读:python字符串截取与替换的多种方法,以冒号分隔的字符串的截取方法,python字符串替换方法, ...

  7. C++内存管理(超长,例子很详细,排版很好)

    [导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不 ...

  8. ThinkPHP实现跨模块调用操作方法概述

    ThinkPHP实现跨模块调用操作方法概述 投稿:shichen2014 字体:[增加 减小] 类型:转载   使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块 ...

  9. ThinkPHP的连贯操作方法中field方法

    ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段,下面详细道来. 1.用于查询 在查询操作中field方法是使用最频繁的. $Model ...

随机推荐

  1. [bzoj1875][SDOI2009] HH去散步 [dp+矩阵快速幂]

    题面 传送门 正文 其实就是让你求有多少条长度为t的路径,但是有一个特殊条件:不能走过一条边以后又立刻反着走一次(如果两次经过同意条边中间隔了别的边是可以的) 如果没有这个特殊条件,我们很容易想到dp ...

  2. JDK中的SimpleDateFormat线程非安全

    在JDK中使用SimpleDateFormat的时候都会遇到线程安全的问题,在JDK文档中也说明了该类是线程非安全的,建议对于每个线程都创建一个SimpleDateFormat对象.如下面一个Case ...

  3. NOIP2018前的一些计划&记录(日更)

    先空着,等停课了再开始写. 诸位好,我是yyb.现在显然已经不再是高一的小蒟蒻了,已经升级为了高二的菜鸡了 现在已经不能再每天划划水切切题了,毕竟......已经高二了,所有的机会从高一的两倍全部除了 ...

  4. 【BZOJ2733】永无乡(线段树,并查集)

    [BZOJ2733]永无乡(线段树,并查集) 题面 BZOJ 题解 线段树合并 线段树合并是一个很有趣的姿势 前置技能:动态开点线段树 具体实现:每次合并两棵线段树的时候,假设叫做\(t1,t2\), ...

  5. 使用SUID二进制文件进行Linux权限升级技巧

      0x00 基础知识 众所周知,在Linux中一切都以文件存在,包括具有允许或限制三个执行操作(即读/写/执行)权限的目录和设备.因此,当给任何文件设置权限时,应该需要了解允许的Linux用户或限制 ...

  6. 单点登录(十五)-----实战-----cas4.2.x登录mongodb验证方式实现自定义加密

    我们在前一篇文章中实现了cas4.2.x登录使用mongodb验证方式. 单点登录(十三)-----实战-----cas4.2.X登录启用mongodb验证方式完整流程 也学习参考了cas5.0.x版 ...

  7. Java考试题之四

    QUESTION 73 Given: 10: public class Hello { 11: String title; 12: int value; 13: public Hello() { 14 ...

  8. UIScrollview 与 Autolayout 的那点事

    原文  http://www.cocoachina.com/ios/20151221/14757.html 前言 自从写了 介绍Masonry 那篇文章以后 就一直有人对UIScrollView的那个 ...

  9. Eureka的一些注意事项

    1.心跳设置:只能在application.yml中 2. 注册到Eureka上面的服务名称 与swagger2使用的时候,需要配置此项,否则显示服务名称为unknown 3.高可用的Eureka 4 ...

  10. Python【操作Redis数据库】

    Redis非关系型数据库,数据存放在计算机内存中,无SQL语句.Redis中有多种数据类型,比较常用的数据类型是string类型和hash类型.平时我们使用RedisDesktopManager来对R ...