zoukankan      html  css  js  c++  java
  • [转]C#中List用法

    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:
    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
    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集合中搜索元素经常使用该方法,主要技术是泛型委托
    list用法注意:如果增加一个对象,必须重新new一个对象,看下面的例子:
    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);
    }
    上面有区别吗?在输出list的值是有区别了,第一个list里面存放的都是一样的,结果和最后一个一样,都是同一个人对象,第二个list达到预期的效果,存储不同的人对象。这是为什么?原因很简单,一个list对象中存储的都是对一个共有的对象进行引用,所以以最后改变的值为准。
    对象的排序:本文主要阐述对存储datatable的list进行按TableName排序
    ;" id="_mcePaste">
    1、新建一个sort类
     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);即可对list进行排序;

    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:

    代码
    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

    代码
    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集合中搜索元素经常使用该方法,主要技术是泛型委托

    list用法注意:如果增加一个对象,必须重新new一个对象,看下面的例子:

    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);
    }

    上面有区别吗?在输出list的值是有区别了,第一个list里面存放的都是一样的,结果和最后一个一样,都是同一个人对象,第二个list达到预期的效果,存储不同的人对象。这是为什么?原因很简单,一个list对象中存储的都是对一个共有的对象进行引用,所以以最后改变的值为准。

    对象的排序:本文主要阐述对存储datatable的list进行按TableName排序

    1、新建一个sort类

    代码
    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);即可对list进行排序;

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cxb_wind/archive/2008/04/10/2277670.aspx

  • 相关阅读:
    Serialize and Deserialize Binary Tree
    sliding window substring problem汇总贴
    10. Regular Expression Matching
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第七章 链接
    程序员如何写一份合格的简历?(附简历模版)
    9个提高代码运行效率的小技巧你知道几个?
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第六章 存储器层次结构
    24张图7000字详解计算机中的高速缓存
    《深入理解计算机系统》(CSAPP)实验四 —— Attack Lab
    《深入理解计算机系统》(CSAPP)读书笔记 —— 第五章 优化程序性能
  • 原文地址:https://www.cnblogs.com/starm/p/1763483.html
Copyright © 2011-2022 走看看