关于List的一些问题(按最优ANSWER给分)

superray2008 2009-03-02 07:31:28
1.如何把List<T>中的(动态)数据绑定到dataGridView中,而且两者Index是一一对应的关系 ?

2.List<T>的方法RemoveAt(i)删除索引i这一项后,Count会不会自动减一 ? 索引i后面这些元素的Index会不会自动减一 ?

3.怎么判断List<T>新加入的元素是否已存在 ??
...全文
295 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanlili123_benben 2009-03-04
  • 打赏
  • 举报
回复
索引当然会加了,只不过是一个空值。
superray2008 2009-03-04
  • 打赏
  • 举报
回复
重新发了帖子,已经解决,参见以下帖子:

http://topic.csdn.net/u/20090303/20/dbb7289b-f47f-4025-94b2-ed2a98104e7e.html?seed=157206995
superray2008 2009-03-02
  • 打赏
  • 举报
回复
还是不行啊,头疼.....8楼的程序是绝对正确的,但是按你的方法嵌入我的程序中就有问题了,说是override出错,这里的T是不是不能随便改的??
superray2008 2009-03-02
  • 打赏
  • 举报
回复
8楼试试看 顺便问下 一个null返回给List后 List的Count会不会++??
fanlili123_benben 2009-03-02
  • 打赏
  • 举报
回复
1:有点模糊了,不能回答你,对不起了。
2:List <T>的方法RemoveAt(i)删除索引i这一项后,Count后的索引也会减少一,它会重新分配的。例如集合中有3个元素,你删除一个索引为0的和一个索引为1的后,在删除索引为2的它就会报错了。
3:用集合的count属性,打印出个数之后再添加,然后再打印出个数看个数的变化就知道有没有添加成功了 。
CutBug 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 superray2008 的回复:]
List <T> .Contains()括号里的参数是不是要检验的往List <T> 里新加入的元素 ??

为什么我这么做不行啊,永远是false....
[/Quote]

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
}

}
liudeqing2008 2009-03-02
  • 打赏
  • 举报
回复
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方法,会哦这你自己去定义一个方法来来判断方法!
gui0605 2009-03-02
  • 打赏
  • 举报
回复
我更喜欢用ILIST<T>或者Dictionary<K,V>
1、DataGridView.DataSource = ILIST<T>对象是可以的,我想LIST<T>也应该可行
2、会
3、Contains方法
superray2008 2009-03-02
  • 打赏
  • 举报
回复
List <T> .Contains()括号里的参数是不是要检验的往List <T> 里新加入的元素 ??

为什么我这么做不行啊,永远是false....
LiMengHapply 2009-03-02
  • 打赏
  • 举报
回复
2. List <T>的方法RemoveAt(i)删除索引i这一项后,Count会不会自动减一 ? 索引i后面这些元素的Index会不会自动减一 ?
会自动减一,List<L>只适合对数据的保存,而对它的查看不是很方便 ,在此我建议使用Dictionary<K,V>.
wuyq11 2009-03-02
  • 打赏
  • 举报
回复
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
天乐 2009-03-02
  • 打赏
  • 举报
回复
1、不清楚,很久没弄DataGrid了

2 2.List <T>的方法RemoveAt(i)删除索引i这一项后,Count会不会自动减一 ? 索引i后面这些元素的Index会不会自动减一 ?



3、List<T>.Contains(T) 确定某元素是否在 List中

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧