logs 为一个arraylist , 里面按时间顺序 存入了超过1000个 结构体 struct loginfo ,
其中每个loginfo 有一个公有成员变量int ID ,有一个公有成员变量 time记录着这个结构体进入arraylist logs的时间DateTime ,现在要筛选出每个ID 的loginfo 在这个arraylist logs里面 第一次 出现的 位置 ,和最后一次出现的位置, 最后 
要的效果是 把它存入到另一个arraylist temp  里面  存入的效果应该是
id =A, time = ...;......其他成员变量信息
id =A, time = ...,......其他成员变量信息
id =B, time = ...;......其他成员变量信息 
id =B, time = ...;......其他成员变量信息
id =C, time = ...;......其他成员变量信息
id =C, time = ...;......其他成员变量信息要注意一点的是 在 logs 里面  所有的 结构体 不是按 id 有序的  而是参差的,比如(021124444423111157311116662223466613333.........)  所以筛选起来就成了问题,求解决方法刚进来 分比较少,见谅。。

解决方案 »

  1.   


    这个问题的核心在于,若干条信息,找出存在哪几种,种类就是这里的id,并把每个种类在logs里的第一条信息和最后一条信息输出。
      

  2.   

    比如 ArrayList faceLogList = new ArrayList();已通过 WindProc函数,Add进去若干 FaceLogInfo
    其中  public struct FaceLogInfo
            {
                
                
                public SigEDetectLog faceDtcLog;
                /// <summary>
                /// 
                /// </summary>
                public DateTime startTime;            
            }
    public class SigEDetectLog
        {
            /// <summary>
            /// 
            /// </summary>
            public const int length = 60;        /// <summary>
            /// Tracking ID.
            /// </summary>
            public UInt32 trackID;        /// <summary>
            /// Track frame number.
            /// </summary>
            public UInt32 trackFrame;        /// <summary>
            /// Person ID.
            /// </summary>
            public Int32 personID;        /// <summary>
            /// Gender.
            /// </summary>
            public SByte gender;        /// <summary>
            /// Age
            /// </summary>
            public SByte age;        /// <summary>
            /// Lower limit of age.
            /// </summary>
            public SByte ageLow;        /// <summary>
            /// Higher limit of age.
            /// </summary>
            public SByte ageHigh;        /// <summary>
            /// Face yaw degree.
            /// </summary>
            public Int16 yaw;        /// <summary>
            /// Face pitch degree.
            /// </summary>
            public Int16 pitch;        /// <summary>
            /// Facer cooridates (Four points).
            /// </summary>
            [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 4)]
            public SE_Point[] facer;        /// <summary>
            /// Track status.
            /// </summary>
            public UInt32 trackStatus;        /// <summary>
            /// Facer MT cooridates (Four points).
            /// </summary>
            [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 4)]
            public SE_Point[] facerMT;        /// <summary>
            /// Is face near the signage eye. 0:no, 1:yes.
            /// </summary>
            public SByte bNear;
        }现在就是找相应trackID第一次 出现 和最后 一次 在faceLogList里面出现的位置 ,并加到一个新的list里,暂且叫 TempList吧
      

  3.   

    是记录出现的位置还是记录startTime的最大最小值?