欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

List<>中Find的用法小結(jié)

 更新時(shí)間:2014年01月21日 10:11:13   作者:  
本篇文章主要是對(duì)List<>中Find的用法進(jìn)行了總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助

I've been looking for help on how to find objects in Generics with List.Find() method .... and ... take a look what I have found.
In the follow example, I created a simple class:

復(fù)制代碼 代碼如下:

public class Person
{
       private int _id;
       private string _name;

       public int ID {  get{ return _id;} set{ _id = value;}}
       public int Name {  get{ return _name;} set{ _name= value;}}

       public Person(int id, string name)
       {
             _id = id;
             _name = name;
       }
}


In the example, there's a simple class with two private attributes. Now we're going to create a typed List of this object and take advantage of the Find() method
復(fù)制代碼 代碼如下:

public void CreateAndSearchList()
{
      //create and fill the collection
      List<Person> myList = new List<Person>();
      myList.Add(new Person(1, "AndreySanches"));
      myList.Add(new Person(2, "AlexandreTarifa"));
      myList.Add(new Person(3, "EmersonFacunte"));

     //find a specific object
     Person myLocatedObject = myList.Find(delegate(Person p) {return p.ID == 1; });
}


備注:在list和array集合中搜索元素經(jīng)常使用該方法,主要技術(shù)是泛型委托

list用法注意:如果增加一個(gè)對(duì)象,必須重新new一個(gè)對(duì)象,看下面的例子:

復(fù)制代碼 代碼如下:

person p=new pewson();
for(int i=0;i<5;i++)
{
p.ID=i;
p.Name="xxxx";
list.add(p);
}

for(int i=0;i<5;i++)
{
person p=new person();
p.ID=i;
p.Name="xxxx";
list.add(p);
}


上面有區(qū)別嗎?在輸出list的值是有區(qū)別了,第一個(gè)list里面存放的都是一樣的,結(jié)果和最后一個(gè)一樣,都是同一個(gè)人對(duì)象,第二個(gè)list達(dá)到預(yù)期的效果,存儲(chǔ)不同的人對(duì)象。這是為什么?原因很簡(jiǎn)單,一個(gè)list對(duì)象中存儲(chǔ)的都是對(duì)一個(gè)共有的對(duì)象進(jìn)行引用,所以以最后改變的值為準(zhǔn)。

對(duì)象的排序:本文主要闡述對(duì)存儲(chǔ)datatable的list進(jìn)行按TableName排序

1、新建一個(gè)sort類

復(fù)制代碼 代碼如下:

public class SceneSort:IComparer<DataTable>
    {
       public int Compare(DataTable obj1, DataTable obj2)
       {
           int tableNameLength1;
           int tableNameLength2;
           if (obj1 == null)
           {
               if (obj2 == null)
                   return 0;
               else
                   return -1;
           }
           else
           {
               if (obj2 == null)
                   return 1;
               else
               {
                   tableNameLength1=obj1.TableName.Length;
                   tableNameLength2=obj2.TableName.Length;
                   if (Convert.ToInt32(obj1.TableName.Substring(2,tableNameLength1-2))>Convert.ToInt32(obj2.TableName.Substring(2,tableNameLength2-2)))
                       return 1;                            //大于返回1
                   else if (Convert.ToInt32(obj1.TableName.Substring(2,tableNameLength1-2))<Convert.ToInt32(obj2.TableName.Substring(2,tableNameLength2-2)))
                       return -1;                           //小于返回-1
                   else
                       return 0;                            //相等返回0
               }
           }

       }


2 排序:
List<DataTable> ldt = new List<DataTable>();
SceneSort ss=new SceneSort ();
tablelist.sort(ss);即可對(duì)list進(jìn)行排序;

相關(guān)文章

  • C# WinForm創(chuàng)建Excel文件的實(shí)例

    C# WinForm創(chuàng)建Excel文件的實(shí)例

    下面小編就為大家?guī)?lái)一篇C# WinForm創(chuàng)建Excel文件的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C#清除WebBrowser中Cookie緩存的方法

    C#清除WebBrowser中Cookie緩存的方法

    這篇文章主要介紹了C#清除WebBrowser中Cookie緩存的方法,涉及C#針對(duì)WebBrowser控件的操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2016-05-05
  • WebService 的簡(jiǎn)單封裝接口調(diào)用方法

    WebService 的簡(jiǎn)單封裝接口調(diào)用方法

    這篇文章主要介紹了WebService 的簡(jiǎn)單封裝接口調(diào)用方法,主要是通過(guò)簡(jiǎn)單的sql語(yǔ)句來(lái)查詢數(shù)據(jù)庫(kù),從而返回dataset,十分簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • 深入多線程之:Wait與Pulse的使用詳解

    深入多線程之:Wait與Pulse的使用詳解

    本篇文章是對(duì)Wait與Pulse的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#訪問(wèn)C++動(dòng)態(tài)分配的數(shù)組指針(實(shí)例講解)

    C#訪問(wèn)C++動(dòng)態(tài)分配的數(shù)組指針(實(shí)例講解)

    下面小編就為大家分享一篇C#訪問(wèn)C++動(dòng)態(tài)分配的數(shù)組指針(實(shí)例講解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • C#中截取字符串的的基本方法詳解

    C#中截取字符串的的基本方法詳解

    這篇文章主要介紹了C#中截取字符串的的基本方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Unity3D開發(fā)之獲取所有的子對(duì)象的方法詳解

    Unity3D開發(fā)之獲取所有的子對(duì)象的方法詳解

    這篇文章主要為大家詳細(xì)介紹了三種Unity3D中獲取所有的子對(duì)象(child)的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • C#中的Linq?To?XML講解

    C#中的Linq?To?XML講解

    本文詳細(xì)講解了C#中的Linq?To?XML,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#線程 BeginInvoke和EndInvoke使用方法

    C#線程 BeginInvoke和EndInvoke使用方法

    本文開始C#線程系列講座之一,即BeginInvoke和EndInvoke的使用方法,需要的朋友可以參考下
    2013-05-05
  • 詳解C#獲取特定進(jìn)程CPU和內(nèi)存使用率

    詳解C#獲取特定進(jìn)程CPU和內(nèi)存使用率

    本篇文章主要介紹詳解C#獲取特定進(jìn)程CPU和內(nèi)存使用率,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-11-11

最新評(píng)論