1.如何把List<T>中的(动态)数据绑定到dataGridView中,而且两者Index是一一对应的关系 ?2.List<T>的方法RemoveAt(i)删除索引i这一项后,Count会不会自动减一 ? 索引i后面这些元素的Index会不会自动减一 ?3.怎么判断List<T>新加入的元素是否已存在 ??

解决方案 »

  1.   

    1、不清楚,很久没弄DataGrid了2 2.List <T>的方法RemoveAt(i)删除索引i这一项后,Count会不会自动减一 ? 索引i后面这些元素的Index会不会自动减一 ? 会3、List<T>.Contains(T)  确定某元素是否在 List中
      

  2.   

    1 DataGridView.DataSource = new BindingList<T>(List<T>);
    List<T> modelList=new List<T>((BindingList<T>)this.DataGridView.DataSource);
    3 通过Contains判断是否存在数据
    http://blog.csdn.net/aladdinty/archive/2008/12/11/3494357.aspx
      

  3.   

     2.  List <T>的方法RemoveAt(i)删除索引i这一项后,Count会不会自动减一 ? 索引i后面这些元素的Index会不会自动减一 ?
        会自动减一,List<L>只适合对数据的保存,而对它的查看不是很方便 ,在此我建议使用Dictionary<K,V>.
      

  4.   

    List <T> .Contains()括号里的参数是不是要检验的往List <T> 里新加入的元素 ??为什么我这么做不行啊,永远是false....
      

  5.   

    我更喜欢用ILIST<T>或者Dictionary<K,V>
    1、DataGridView.DataSource = ILIST<T>对象是可以的,我想LIST<T>也应该可行
    2、会
    3、Contains方法
      

  6.   

    1.如何把List <T>中的(动态)数据绑定到dataGridView中,而且两者Index是一一对应的关系 ?
    答:DataGridView.DataSource =对象名(LIST <T>对象名),二者之间的关系不会是一一对应的,如果你使用List<T>后台是数据库那么List<T>中的排序是按照数据库中数据的排序去排序的。
    2.List <T>的方法RemoveAt(i)删除索引i这一项后,Count会不会自动减一 ? 索引i后面这些元素的Index会不会自动减一 ? 
    List <T>的方法RemoveAt(i)删除索引i这一项后,Count会自动减一,索引i后面这些元素的Index也会自动减一 。
    3、List <T>.Contains(T)  确定某元素是否在 List中
    使用Contains方法,会哦这你自己去定义一个方法来来判断方法!
      

  7.   


    List <T> 中T需要重写一下Equals,比如你指定定2个T的ID相等,这两个T就相等
    using System;
    using System.Collections.Generic;
    class T
    {
        private string _id ;
        public T(string pID)
        {
            _id = pID;
        }    public string ID
        {
            get { return _id; }
        }
        public override bool Equals(object obj)
        {
            if (!(obj is T))
            {
                return false;
            }
            return ((T)obj).ID == this.ID;
        }    public override int GetHashCode()
        {
            return _id.GetHashCode();
        }    public static bool operator ==(T t1, T t2)
        {
            return t1.Equals(t2);
        }    public static bool operator !=(T t1, T t2)
        {
            return !t1.Equals(t2);
        }    }
    class example
    {
        static void Main()
        {
            T t1 = new T("a");
            T t2 = new T("a");
            Console.WriteLine(t1 == t2);//true        List<T> list = new List<T>();
            list.Add(t1);
            Console.WriteLine(list.Contains(t2));//true
        }}
      

  8.   

    1:有点模糊了,不能回答你,对不起了。
    2:List <T>的方法RemoveAt(i)删除索引i这一项后,Count后的索引也会减少一,它会重新分配的。例如集合中有3个元素,你删除一个索引为0的和一个索引为1的后,在删除索引为2的它就会报错了。
    3:用集合的count属性,打印出个数之后再添加,然后再打印出个数看个数的变化就知道有没有添加成功了 。
      

  9.   

    8楼试试看 顺便问下 一个null返回给List后 List的Count会不会++??
      

  10.   

    还是不行啊,头疼.....8楼的程序是绝对正确的,但是按你的方法嵌入我的程序中就有问题了,说是override出错,这里的T是不是不能随便改的??
      

  11.   

    重新发了帖子,已经解决,参见以下帖子:http://topic.csdn.net/u/20090303/20/dbb7289b-f47f-4025-94b2-ed2a98104e7e.html?seed=157206995