C# 修改列表时将对象列表的选定内容转换为数组

C# 修改列表时将对象列表的选定内容转换为数组,c#,android,arrays,list,xamarin,C#,Android,Arrays,List,Xamarin,我正在收集手机传感器数据,并将其填充到对象列表中,从每个传感器的特定类开始: public class accbuff { public double ax { get; set; } public double ay { get; set; } public double az { get; set; } public long acct { get; set; } } 然后,我将每个新的传感器读取事件(

我正在收集手机传感器数据,并将其填充到对象列表中,从每个传感器的特定类开始:

    public class accbuff
    {
        public double ax { get; set; }
        public double ay { get; set; }
        public double az { get; set; }
        public long acct { get; set; }
    }
然后,我将每个新的传感器读取事件(如值)和时间戳附加到列表中:

                accList.Add(new accbuff
                {
                    ax = e.Values[0],
                    ay = e.Values[1],
                    az = e.Values[2],
                    acct = stopwatch.ElapsedMilliseconds
                });
最后,在设定的时间段后,我想将列表内容传递给我拥有的一些科学计算方法,然后清除列表并重置计时器

这就是我需要帮助的地方。清除列表或重置计时器没有问题,但无法从列表中复制数据,因为在将副本枚举到阵列时,新的传感器读数会修改列表

传感器读数约为500hz。如果我尝试下面的方法,我会由于修改而得到枚举错误

 long[] at = accList.Select(x => x.acct).ToArray();
 stopwatch.Restart();
 accList.Clear();
我知道我可以锁定它,但在我将列表复制到阵列以供进一步使用时,我实际上不想在传感器读数上有间隙。任何继续进行的战略都会非常有帮助。谢谢

我希望这有助于:

long[] at = accList.ToList().Select(x => x.acct).ToArray();
stopwatch.Restart();
accList.Clear();
long[] at = accList.ToList().Select(x => x.acct).ToArray();
stopwatch.Restart();
accList.Clear();
我希望这有助于:

long[] at = accList.ToList().Select(x => x.acct).ToArray();
stopwatch.Restart();
accList.Clear();
long[] at = accList.ToList().Select(x => x.acct).ToArray();
stopwatch.Restart();
accList.Clear();

更新列表时,在选择属性之前,您需要为
列表创建一个单独的副本:

var listCopy = accList.ToList();
然后使用
listCopy

long[] at = listCopy.Select(x => x.acct).ToArray();
stopwatch.Restart();
accList.Clear();
您还可以简化整个过程:


更新列表时,在选择属性之前,您需要为
列表创建一个单独的副本:

var listCopy = accList.ToList();
然后使用
listCopy

long[] at = listCopy.Select(x => x.acct).ToArray();
stopwatch.Restart();
accList.Clear();
您还可以简化整个过程: