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;
}
}
}
c# List 所有操作方法例子的更多相关文章
- Selenium 入门到精通系列:四
Selenium 入门到精通系列 PS:鼠标右键.鼠标悬停.键盘操作方法 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019 ...
- Collection View Programming Guide for iOS---(五)---Incorporating Gesture Support
Incorporating Gesture Support 结合手势支持 You can add greater interactivity to your collection views th ...
- C#File类常用的文件操作方法(创建、移动、删除、复制等)
File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和 打开一个文件. File类方法的参量很多时候都是路径path ...
- 例子:Background Audio Streamer Sample
The Background Audio Streamer sample demonstrates how to create an app that uses a MediaStreamSource ...
- [转] shell字符串操作方法,以及实例
每一种语言都有他独自的字符串操作方法,shell也一样,下面以以例子的方式,简单介绍常用方法. 1,取得字符串长度 string=abc12342341 //等号二边不要有空格 echo ${#str ...
- python字符串截取与替换的例子
python字符串截取与替换的多种方法 时间:2016-03-12 20:08:14来源:网络 导读:python字符串截取与替换的多种方法,以冒号分隔的字符串的截取方法,python字符串替换方法, ...
- C++内存管理(超长,例子很详细,排版很好)
[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不 ...
- ThinkPHP实现跨模块调用操作方法概述
ThinkPHP实现跨模块调用操作方法概述 投稿:shichen2014 字体:[增加 减小] 类型:转载 使用 $this 可以调用当前模块内的方法,但是很多情况下经常会在当前模块中调用其他模块 ...
- ThinkPHP的连贯操作方法中field方法
ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段,下面详细道来. 1.用于查询 在查询操作中field方法是使用最频繁的. $Model ...
随机推荐
- Timing wheel心跳机制
在web服务中,断开空闲连接是一种减少资源浪费的一种手段,由此就有了心跳机制来判断一个连接是否空闲. 一种简单粗暴的方式: 1. 服务端每个连接保存一个最后一次操作的时间戳,每次这个连接对应fd可读时 ...
- 【刷题】BZOJ 2154 Crash的数字表格
Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数.例如 ...
- 【转】关于在vim中的查找和替换
1,查找 在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车. Vim会跳转到第一个匹配.按下n查找下一个,按下N查找上一个. Vim查找支持正则表达式,例如/vim$匹配行尾的 ...
- 数字表格(product)
Description Solution 一开始的时候我是这么推的(\(f(n)\)表示斐波那契数列的第\(n\)项) \[ \begin{aligned} Ans&=\prod_{x=1}^ ...
- activity 与 service 之间的通信
activity和service通信:通过binder 举个我实际项目中的例子:在service中下载更新应用 首先是下载更新apk的service: public class UpdateVersi ...
- 解题:POI 2006 PRO-Professor Szu
题面 这个题是比较套路的做法啦,建反图后缩点+拓扑排序嘛,对于所有处在$size>=2$的SCC中的点都是无限解(可以一直绕) 然后注意统计的时候的小细节,因为无限解/大解也要输出,所以我们把这 ...
- bzoj 4358: permu 莫队
第一步先莫队分块. 对于每一块l~r,初始右端点设为r+1,然后每个询问先将右端点往右移,然后处理询问在l~r之间的部分,最后用一个栈再把l~r的复原. 具体来说是维护两个数组now1和now2,一个 ...
- python入门:求1-2+3-4+5...99的所有数的和
#!/usr/bin/env python # -*- coding:utf-8 -*- #求1-2+3-4+5...99的所有数的和 """ 给start赋值为1,su ...
- python的匿名函数 lambda的使用方法详解以及使用案例
1.匿名函数是用lambda这个关键字定义 lambda x:x+1 第一个x代表形参,x+1相当于函数的返回值 #lambda x:x+1 第一个x代表形参,x+1相当于函数的返回值 def ...
- twitter——数据连接
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003 ...