上一篇:
C#,入门教程(19)——循环语句(for,while,foreach)的基础知识 https://blog.csdn.net/beijinghorn/article/details/124060844
https://blog.csdn.net/beijinghorn/article/details/124060844

List顾名思义就是数据列表,区别于数据数组(array)。
 List比数组提供强大得多!多!多!多!的功能,能存储更多!多!多!类型的数据(泛型)!
 List是更多数据集合(序表SortedList、链表LinkedList、堆栈Stack、队列Quene及哈希表Hashtable等)的基础。
 因而,可以说:无列表,不编程!
一、命名空间
using System.Text;
using System.Linq;
using System.Collections;
using System.Collections.Generic;如果代码提示错误信息,先添加上面的这些命名空间。
if (入门 List )
{本文就够了。
}
else if (想精通 List )
{请掌握 Linq 与 Lamda 表达式的基础知识。
}
else 
{关注我!无穷知识传给你!
}二、List的声明(定义)
1、List声明
语法:
List<T> tList = new List<T>();  
 注:<T>即为泛型,可以理解为任意的数据类型(数值、类、结构体、object及其他数据体)。
实例:
List<string> stringList = new List<string>();
List<Classmate>classmateList = new List<Classmate>();2、List初值
可以在声明一个List的同时,给出初值。
List<string> stringList = new List<string>() { "Tom", "Jerry", "!" 
};
List<Classmate> classmateList = new List<Classmate>() {new Classmate("1", "Tom"), new Classmate("2", "Jerry")
};3、数组array转为List
语法:
List<T> tList =new List<T> (数据集);
 实例:
string[] stringArray = { "Tom", "Jerry", "!"  
};
List<string> stringList = new List<string>(stringArray);
//或者(Linq方法):
List<string> stringList = stringArray.ToList();
//反之:
string[] stringArray = stringList.ToArray();三、List的基础功能与常用操作
1、List的数据总数
语法:int List.Count()
 实例:int count = stringList.Count();
2、清空List
语法:void List.Clear() 
 实例:stringList.Clear();
 必要的时候清空列表是好习惯!
3、List的遍历
语法:
// T的类型与mList声明时一样
string result = "";
foreach (T element in tList)  
{result += element.ToString();
}实例(制作同学花名册):
List<Classmate> classmateList = new List<Classmate>();
//(因个人隐私需要,此处又省略。。。)
StringBuilder sb = new StringBuilder();
sb.AppendLine("<table>");
sb.AppendLine("<tr>");
sb.AppendLine("<td>序号</td>");
sb.AppendLine("<td>昵称</td>");
sb.AppendLine("<td>姓名</td>");
sb.AppendLine("<td>手机号</td>");
sb.AppendLine("<td>邮箱</td>");
sb.AppendLine("</tr>");
foreach (Classmate mo in classmateList)
{sb.AppendLine("<tr>");sb.AppendLine("<td>" + mo.Id + "</td>");sb.AppendLine("<td>" + mo.Nickname + "</td>");sb.AppendLine("<td>" + mo.Name + "</td>");sb.AppendLine("<td>" + mo.Mobile + "</td>");sb.AppendLine("<td>" + mo.Email + "</td>");sb.AppendLine("</tr>");
}
sb.AppendLine("</table>");4、添加一个或一组数据
语法:List.Add(T item)
 语法:List.AddRange(数据集合)   
 注意:狗尾续貂,数据添加在尾部;
实例:
List<string> stringList = new List<string>();
stringList.Add("Tom");//或:
string[] stringArray = { "Tom", "Jerry", "!"  
};
List<string> firstStringList = new List<string>();
firstStringList.AddRange(stringArray);//又或:
List<string> secondStringList = new List<string>();
//(此处可能省略几句话。。。)
stringList.AddRange(secondStringList);
 5、按指定位置添加数据
 
语法: Insert(int index, T item); 
 实例:
List<string> stringList = new List<string>();
stringList.Insert(1, "House");
 6、删除元素
 
① 按数据删除
 语法:List.Remove(T item)
 ② 按位置删除
 语法:List.RemoveAt(int index);   
 ③ 批量删除
 语法:List.RemoveRange(int index, int count);
 ④ 按条件删除
 语法:List.RemoveAll(Predicate<T> match)
 方法:删除满足条件的所有元素。
实例:
stringList.Remove("Tom");
stringList.RemoveAt(0);
stringList.RemoveRange(1, 2);
//(Lamda表达式)
stringList.RemoveAll(t => t.Id > 10);7、判断List是否包含某个数据?
语法:List.Contains(T item)   
 返回:true 或 false
实例:
 string result = "";
 if (mList.Contains("Tom"))
 {
     result = "Tom is in the list";
 }
 else
 {
     result = "Tom is not in the list";
 }
 四、List的高级应用
 
 1、List排序
 
语法:List.Sort()
 按数据的默认升序排序;
 stringList.Sort();
这个实际上没有什么用处,强烈推荐下面的语法:
 语法:
 tList.Sort(delegate(T a, T b) {
     return Comparer<long>.Default.Compare(a.Hashcode(), b.Hashcode());
 });
实例(正序):
classmateList.Sort(delegate(Classmate a, Classmate b)) {if(a.Id > b.Id) {return 1;}else {return -1;}
});
//实例(倒序):
classmateList.Sort(delegate(Classmate a, Classmate b)) {if(b.Id > a.Id) {return 1;}else {return -1;}
});
//实例(倒序,简约写法):
classmateList.Sort(delegate(Classmate a, Classmate b)) {return ((b.Id > a.Id) ? 1 : -1);
});
//或者,实例(倒序,简约写法):
classmateList.Sort(delegate(Classmate a, Classmate b)) {return Comparer<int>.Default.Compare(b.Id, a.Id);
});列表的排序是使用频率非常高的功能,应该熟练掌握!
 2、List反转
 
语法:List.Reverse()
 3、List检索与批量检索
 
① List.Find方法:检索满足条件的第一个元素; 
 语法:public List<T> Find(Predicate<T> match);
② List.FindAll方法:检索满足条件的所有元素; 
 语法:public List<T> FindAll(Predicate<T> match);
③ List.Where方法:检索满足条件的所有元素;(类似FindAll)。
 语法:public List<T> Where(Predicate<T> match);
④ List.FindLast 方法:检索满足条件的最后一个元素; 
 语法:public T FindLast(Predicate<T> match);
实例(推荐使用Lamda表达式):
List<Classmate> someClassmateList = classmateList.Find(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.FindAll(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.Where(t => t.Mobile.StartsWith("139"));
List<Classmate> someClassmateList = classmateList.FindLast(t => t.Mobile.StartsWith("139"));
 4、List的片段提取
 
语法:List.Take(int number);
 方法:获得前number个数据,构成一个数据子集;
List<Classmate> top3List = classmateList.Take(3);
一般先排序,再提取!
——————————————————————
POWER BY 315SOFT.COM &
TRUFFER.CN
下一篇:
 C#,入门教程(21)——命名空间(namespace)与程序结构的基础知识 https://blog.csdn.net/beijinghorn/article/details/124140653
https://blog.csdn.net/beijinghorn/article/details/124140653
