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. HotSpot垃圾收集器GC的种类

      堆内存的结构:

  2. Graph And Its Complement CodeForces - 990D(思维构造)

    题意: 图中有n个点,开始有a个连通块,然后连着的边断开,不连的边连上,变为b个连通块,输出原图的邻接矩阵. 解析: 原图中连通块大于1的图,经过上述操作后,一定变成只有1个连通块的图. 若n != ...

  3. c++11 模板的别名

    c++11 模板的别名 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #inclu ...

  4. BZOJ 1499 [NOI2005] 瑰丽华尔兹 | 单调队列优化DP

    BZOJ 1499 瑰丽华尔兹 | 单调队列优化DP 题意 有一块\(n \times m\)的矩形地面,上面有一些障碍(用'#'表示),其余的是空地(用'.'表示).每时每刻,地面都会向某个方向倾斜 ...

  5. 命令行Scp的使用----远程拷贝文件

    1.用CRT分别连上两台需要传输文件的linux系统服务器,并检查防火墙是否关闭. 查看防火墙状态: /etc/init.d/iptables status 若防火墙启用,暂时关闭防火墙: /etc/ ...

  6. Java EE之Servlet

    1.创建Servlet类 Servlet在Java EE API规范中的定义: Servlet是一个运行在Web服务器中的Java小程序.Servlet将会接收和响应来自Web客户端的请求,使用HTT ...

  7. (转)java getResourceAsStream的使用方法

    背景:对于java项目中配置文件加载时候的绝对路径和相对路径做一个清晰的认识! 1 分析路径 在Java项目中会经常用到getResourceAsStream这个函数获取一些配置文件,但是怎样正确使用 ...

  8. CentOS 6.5下Squid代理服务器的安装与配置

    1.1   缓存代理概述 作为应用层的代理服务器软件,squid主要提供缓存加速,应用层过滤控制的功能. 1.  代理的工作机制 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存 ...

  9. C++统一初始化

    .C++中指定初始化值的方式有4种方式: ()小括号 ); ()等号 ; ()大括号 }; ()等号和大括号 }; .C++11统一初始化, 即使用大括号初始化方式, 其使用场景主要有以下3种: () ...

  10. shell参数代表什么,如何调试shell?

    $0就是该bash文件名$?是上一指令的返回值$*所有位置参数的内容:就是调用调用本bash shell的参数.$@基本上与上面相同.只不过是“$*”返回的是一个字符串,字符串中存在多外空格.“$@” ...