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. SpringBoot项目部署进阶

    一.war包部署 通过“云开发”平台初始化的SpringBoot项目默认采用jar形式打包,这也是我们推荐的方式.但是,因为某些原因,软件需求方特别要求用war形式打包,我们该怎么做? 1.项目尚未开 ...

  2. linux grep --我最喜欢的命令~~

    转:http://www.cnblogs.com/end/archive/2012/02/21/2360965.html Grep 命令 用法大全 1. 参数: -I :忽略大小写 -c :打印匹配的 ...

  3. 【刷题】BZOJ 3524 [Poi2014]Couriers

    Description 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0 ...

  4. Luogu 3373 又乘又加的线段树

    Luogu 3373 又乘又加的线段树 当给一个节点加上一个加法标记时,直接把加法标记 += 新值: 当给一个节点加上一个乘法标记时,把乘法标记和加法标记同时 *= 新值.(注意pushdown函数中 ...

  5. 51nod 1589 移数博弈 | 基数排序(ノಠ益ಠ)ノ彡┻━┻

    51nod 1589 移数博弈 题面 给出一个序列a,长度 n <= 10^7, a[i] <= 10^7 求每个长度 >= 2 的区间的最大值*次大值 之和. 题解 主要思路是求每 ...

  6. 洛谷P1592 互质

    题目描述 输入两个正整数n和k,求与n互质的第k个正整数. 输入输出格式 输入格式: 仅一行,为两个正整数n(≤10^6)和k(≤10^8). 输出格式: 一个正整数,表示与n互质的第k个正整数. 由 ...

  7. O(1)时间复杂度求栈中最小元素

    import java.util.Stack; /** * 功能:O(1)时间复杂度求栈中最小元素 * 思路:空间换取时间,使用两个栈,stack1栈存储数据,stack2栈存储最小值: * stac ...

  8. 读Bayes' Theorem

    Bayes' Theorem定理的原理说明,三个简单的例子来说明用法及一些练习. Bayes' Theorem就是概率问题,论文相对比较好理解,也不必做什么笔记.

  9. vue 混入的理解

  10. CALayer属性:position和anchorPoint

    一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设 ...