C# List<T>用法详解

来源:互联网 发布:中国进口 知乎 编辑:程序博客网 时间:2024/06/10 20:26

获得指定索引下的值:

 for (int i = 0; i < list.Count; i++)
                    {
                        int ID2 = Convert.ToInt32(list[i]);
                        string valu = list[i + 1].ToString();

    }


1、给List里面元素排序: 
List. Sort ()   默认是元素第一个字母按升序 
E.g.:   mList.Sort(); 给List里面元素顺序反转: 
List. Reverse ()   可以与List. Sort ()配合使用,达到想要的效果 
E.g.:   mList.Sort(); 
 
 List清空:List. Clear () 
E.g.:   mList.Clear(); 
  获得List中元素数目: 
List. Count ()    返回int值 
E.g.: 
int count = mList.Count(); 
Console.WriteLine("The num of elements in the list: " +count);   
2、  List的进阶、强大方法: 
举例用的List: 
string[] temArr = { Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", " "Locu" }; 
mList.AddRange(temArr);   
List.Find 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的第一个匹配元素。 
public T Find(Predicate<T> match); 
Predicate是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则

该方法返回 true。当前 List 的元素被逐个传递给Predicate委托,并在 List 中向前移动,从第一个元素开始,到最后一个元素结束。当找到匹配项时处理即停止。 
Predicate 可以委托给一个函数或者一个拉姆达表达式 
委托给拉姆达表达式: E.g.: 
            string listFind = mList.Find(name =>  //name是变量,代表的
是mList 

            {                             

 //中元素,自己设定                

 if (name.Length > 3)                

 { 

 return true;

 } 

 return false;             

}); 

Console.WriteLine(listFind);     //输出是Hunter  

委托给一个函数: E.g.: 
string listFind1 = mList.Find(ListFind);   //委托给ListFind函
数 
Console.WriteLine(listFind);           //输出是Hunter  
ListFind函数: 
 public bool ListFind(string name)
        {
            if (name.Length > 3)
            {
                return true;
            }
            return false;
        } 

这两种方法的结果是一样的。 

List.FindLast 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的最后一个匹配元素。 
public T FindLast(Predicate<T> match); 用法与List.Find相同。 
List.TrueForAll方法:  确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。 
 public bool TrueForAll(Predicate<T> match); 
委托给拉姆达表达式: E.g.: 
            bool flag = mList.TrueForAll(name => 
            { 

               

if (name.Length > 3)                

 { 

return true;                 

}                 

else                 

{ return false;    } } ); 

   Console.WriteLine("True for all:  "+flag);  //flag值为false 
 
委托给一个函数,这里用到上面的ListFind函数: E.g.: 
 bool flag = mList.TrueForAll(ListFind); //委托给ListFind函数 
Console.WriteLine("True for all:  "+flag);  //flag值为false  
这两种方法的结果是一样的。  
List.FindAll方法:检索与指定谓词所定义的条件相匹配的所有元素。 

public List<T> FindAll(Predicate<T> match); 
E.g.: 
List<string> subList = mList.FindAll(ListFind); //委托给
ListFind函数 
        foreach (string s in subList)         { 
            Console.WriteLine("element in subList: "+s);         } 
        这时subList存储的就是所有长度大于3的元素  
List.Take(n):  获得前n行 返回值为IEnumetable<T>,T的类型与List<T>的类型一样 
E.g.: 
IEnumerable<string> takeList=  mList.Take(5); 
          foreach (string s in takeList)           { 
              Console.WriteLine("element in takeList: " + s);           } 
       这时takeList存放的元素就是mList中的前5个  
List.Where方法:检索与指定谓词所定义的条件相匹配的所有元素。跟List.FindAll方法类似。 
E.g.: 
            IEnumerable<string> whereList = mList.Where(name => 
                {  
                    if (name.Length > 3)                     { 
                        return true;                     }                     else                     { 

                        return false;                     }                 }); 


         foreach (string s in subList)          { 
             Console.WriteLine("element in subList: "+s);          } 
         这时subList存储的就是所有长度大于3的元素 
 
List.RemoveAll方法:移除与指定的谓词所定义的条件相匹配的所有元素。 
public int RemoveAll(Predicate<T> match); 
E.g.: 
            mList.RemoveAll(name => 
                { 
                    if (name.Length > 3)                     { 
                        return true;                     }                     else                     { 
                        return false;                     }                 }); 
            foreach (string s in mList)             { 
                Console.WriteLine("element in mList:     " + s);             } 
      这时mList存储的就是移除长度大于3之后的元素。