当列表很大时,C#List.Find()似乎不起作用

时间:2014-01-03 09:43:11

标签: c# .net comparison

我有一个巨大的列表,其中包含1000万个项目,我正试图在列表中找到一个特定的值。

这是我的项目

struct reference
{
    public double GPST;
    public byte cls;
    public ushort fn;
    public int ret_num;
}

这是我的查询代码

 List<reference> ref_pts;

 List<reference> result = ref_pts.FindAll(delegate(reference obj) { return obj.GPST == pt.GPST; });

其中pt.GPST是我想在List

中找到的值

仅仅是因为尺寸太大,Find方法无效(总是什么都不返回)?

1 个答案:

答案 0 :(得分:8)

你不能比较双打这样的平等,使用epsilon来比较:

bool CompareDoubles2 (double A, double B) 
{
   diff = A - B;
   return (diff < EPSILON) && (-diff < EPSILON);
}

EPSILON是一个非常小的数字,有关详细信息,请参阅herehere

相关问题