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 tList = new List();
注:
实例:
List stringList = new List();
ListclassmateList = new List();
可以在声明一个List的同时,给出初值。
List stringList = new List() {
"Tom", "Jerry", "!"
};
List classmateList = new List() {
new Classmate("1", "Tom"),
new Classmate("2", "Jerry")
};
语法:
List tList =new List (数据集);
实例:
string[] stringArray = {
"Tom", "Jerry", "!"
};
List stringList = new List(stringArray);
//或者(Linq方法):
List stringList = stringArray.ToList();
//反之:
string[] stringArray = stringList.ToArray();
语法:int List.Count()
实例:int count = stringList.Count();
语法:void List.Clear()
实例:stringList.Clear();
必要的时候清空列表是好习惯!
语法:
// T的类型与mList声明时一样
string result = "";
foreach (T element in tList)
{
result += element.ToString();
}
实例(制作同学花名册):
List classmateList = new List();
//(因个人隐私需要,此处又省略。。。)
StringBuilder sb = new StringBuilder();
sb.AppendLine("");
sb.AppendLine("");
sb.AppendLine("序号 ");
sb.AppendLine("昵称 ");
sb.AppendLine("姓名 ");
sb.AppendLine("手机号 ");
sb.AppendLine("邮箱 ");
sb.AppendLine(" ");
foreach (Classmate mo in classmateList)
{
sb.AppendLine("");
sb.AppendLine("" + mo.Id + " ");
sb.AppendLine("" + mo.Nickname + " ");
sb.AppendLine("" + mo.Name + " ");
sb.AppendLine("" + mo.Mobile + " ");
sb.AppendLine("" + mo.Email + " ");
sb.AppendLine(" ");
}
sb.AppendLine("
");
语法:List.Add(T item)
语法:List.AddRange(数据集合)
注意:狗尾续貂,数据添加在尾部;
实例:
List stringList = new List();
stringList.Add("Tom");
//或:
string[] stringArray = {
"Tom", "Jerry", "!"
};
List firstStringList = new List();
firstStringList.AddRange(stringArray);
//又或:
List secondStringList = new List();
//(此处可能省略几句话。。。)
stringList.AddRange(secondStringList);
语法: Insert(int index, T item);
实例:
List stringList = new List();
stringList.Insert(1, "House");
① 按数据删除
语法:List.Remove(T item)
② 按位置删除
语法:List.RemoveAt(int index);
③ 批量删除
语法:List.RemoveRange(int index, int count);
④ 按条件删除
语法:List.RemoveAll(Predicate
方法:删除满足条件的所有元素。
实例:
stringList.Remove("Tom");
stringList.RemoveAt(0);
stringList.RemoveRange(1, 2);
//(Lamda表达式)
stringList.RemoveAll(t => t.Id > 10);
语法: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.Sort()
按数据的默认升序排序;
stringList.Sort();
这个实际上没有什么用处,强烈推荐下面的语法:
语法:
tList.Sort(delegate(T a, T b) {
return Comparer
});
实例(正序):
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.Default.Compare(b.Id, a.Id);
});
列表的排序是使用频率非常高的功能,应该熟练掌握!
语法:List.Reverse()
① List.Find方法:检索满足条件的第一个元素;
语法:public List
② List.FindAll方法:检索满足条件的所有元素;
语法:public List
③ List.Where方法:检索满足条件的所有元素;(类似FindAll)。
语法:public List
④ List.FindLast 方法:检索满足条件的最后一个元素;
语法:public T FindLast(Predicate
实例(推荐使用Lamda表达式):
List someClassmateList = classmateList.Find(t => t.Mobile.StartsWith("139"));
List someClassmateList = classmateList.FindAll(t => t.Mobile.StartsWith("139"));
List someClassmateList = classmateList.Where(t => t.Mobile.StartsWith("139"));
List someClassmateList = classmateList.FindLast(t => t.Mobile.StartsWith("139"));
语法:List.Take(int number);
方法:获得前number个数据,构成一个数据子集;
List
一般先排序,再提取!
——————————————————————
POWER BY 315SOFT.COM &
TRUFFER.CN