首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么在list数组中搜索某一元素值的元素

2012-04-03 
如何在list数组中搜索某一元素值的元素我定义了一个结构如下public struct Point3D_struct{public float x

如何在list数组中搜索某一元素值的元素
我定义了一个结构如下
public struct Point3D_struct
  {
  public float x;
  public float y;
  public float z;
  public int ID;
  public Point3D_struct(float xx, float yy, float zz, int id)
  {
  this.x = xx;
  this.y = yy;
  this.z = zz;
  this.ID = id;
  }
  }
然后建立list数组
public List<Point3D_struct> PCptsList = new List<Point3D_struct>();
我将一系列的点坐标存入数组后,怎样才可以快速得到指定id(id具有唯一性)的坐标值呢?

[解决办法]
public List<Point3D_struct> PCptsList = new List<Point3D_struct>();
...
Point3D_struct find = PCptsList.Where(x => x.id == findid).First();
[解决办法]

C# code
public List<Point3D_struct> PCptsList = new List<Point3D_struct>();...Type   type   =   typeof(Point3D_struct);foreach   (FieldInfo   mi   in   type.GetFields(BindingFlags.Instance   |   BindingFlags.Public   |   BindingFlags.NonPublic)){    //根据你要获取的值,这里假如为1的话    if(mi.ID==1)    {           //输出1对应的点的xyz坐标值           Response.Write(mi.x+","+mi.y+","+mi.z);    }}
[解决办法]
int index = PCptsList.FindIndex(s => s.ID == 0);

if(index>-1)
{
//存在元素
//对应元素
//PCptsList[index]
}
else
{
//不存在
}
[解决办法]
因为是struct ,不通过标记位是很难确定查找的元素是否在已知集合中,

FirstOrDefault,SingleOrDefault,Find etc..

异常的方式更不用考虑

First,Single etc..

[解决办法]
你用vs2005?
[解决办法]
List<T>本来就有Find方法:
C# code
            List<Point3D_struct> list = new List<Point3D_struct>();            Point3D_struct ps = list.Find(delegate(Point3D_struct p) { return p.ID == 1; });//找到ID为1的元素
[解决办法]
.net framework 2.0 下

改下oj的

//找到ID为1的元素的下标
int index = PCptsList.FindIndex(delegate(Point3D_struct p) { return p.ID == 1; });


if(index>-1)
{
//存在元素
//对应元素
//PCptsList[index]
}
else
{
//不存在
}
[解决办法]
楼主,NET有现成的东西:HashTable 、SortedList 都可以:
以哈希表为例:

Hashtable myHT = new Hashtable();
Point3D_struct pt=new Point3D_struct(5,6,7,0);
myHT.Add(id ,pt);
.....................

Point3D_struct temp=(Point3D_struct)myHT[id];//通过id便可以获取对于的pt

热点排行