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. BZOJ 3498 PA2009 Cakes

    本题BZOJ权限题,但在bzojch上可以看题面. 题意: N个点m条无向边,每个点有一个点权a. 对于任意一个三元环(i,j,k)(i<j<k),它的贡献为max(ai,aj,ak) 求 ...

  2. oracle 慢查询

    一.查询执行最慢的sql select * from (select sa.SQL_TEXT, sa.SQL_FULLTEXT, sa.EXECUTIONS "执行次数", , ) ...

  3. 【比赛】NOIP2017 逛公园

    考试的时候灵光一闪,瞬间推出DP方程,但是不知道怎么判-1,然后?然后就炸了. 后来发现,我只要把拓扑和DP分开,中间加一个判断,就AC了,可惜. 看这道题,我们首先来想有哪些情况是-1:只要有零环在 ...

  4. Tengine,轻量级Web服务器

    阿里妹导读:Tengine,轻量级Web服务器,基于Nginx进行开发,针对大访问量网站的需求,新增了很多高级功能和特性.比如,Tengine兼容Nginx的所有配置,并且增加了独立进程框架.页面优化 ...

  5. SpringMVC DispatcherServlet-------视图渲染过程

    整个spring mvc的架构如下图所示: 现在来讲解DispatcherServletDispatcherServlet的最后一步:视图渲染.视图渲染的过程是在获取到ModelAndView后的过程 ...

  6. 学习Spring Boot:(八)Mybatis使用分页插件PageHelper

    首先Mybqtis可以通过SQL 的方式实现分页很简单,只要在查询SQL 后面加上limit #{currIndex} , #{pageSize}就可以了. 本文主要介绍使用拦截器的方式实现分页. 实 ...

  7. 【uoj122】 NOI2013—树的计数

    http://uoj.ac/problem/122 (题目链接) 题意 给出一棵树的dfs序和bfs序,保证一定可以构成一棵树.问构成的树的期望深度. Solution 这是一个悲伤的故事,我YY的东 ...

  8. go语言操作mongodb

    Install the MongoDB Go Driver The MongoDB Go Driver is made up of several packages. If you are just ...

  9. D. Monitor Educational Codeforces Round 28

    http://codeforces.com/contest/846/problem/D 二分答案 适合于: 判断在t时候第一次成立 哪个状态是最小代价 #include <cstdio> ...

  10. Python【面向对象编程】

    #1.python中,类名首字母都大写#2.在python3中,经典类和新式类没有任何区别#3.在python2中,经典类和新式类的区别主要体现在多继承上,经典类是深度优先,新式类是广度优先#4.在p ...