【发布时间】:2010-03-10 09:05:18
【问题描述】:
我以前没有使用过很多 lambda 表达式,我遇到了一个我认为可以巧妙使用一个的情况。我有一个约 19,000 条记录的自定义列表,我需要找出列表中是否存在记录,因此我决定尝试以下操作,而不是编写一堆循环或使用 linq 来遍历列表:
for (int i = MinX; i <= MaxX; ++i)
{
tempY = MinY;
while (tempY <= MaxY)
{
bool exists = myList.Exists(item => item.XCoord == i && item.YCoord == tempY);
++tempY;
}
}
唯一的问题是它需要大约 9 - 11 秒来执行。我做错了什么,这只是我不应该使用这样的表达式的情况吗?
谢谢。
编辑:对不起。我应该详细说明。我正在使用 for 和 while 循环创建记录列表,并检查该记录是否存在于 myList 中。这是我能想到的唯一方法。我会重新评估它,看看我想出了什么。
【问题讨论】:
-
您为什么希望这会很快?这是一个没有任何索引或排序的嵌套搜索。
-
我认为没有必要投反对票。这是一个有趣的问题,虽然措辞不佳。
-
为什么外循环是for循环,内循环是while循环?
-
所以我可以遍历所有 x 坐标,然后遍历所有 y 坐标。例如,将每个 x 视为一列,将每个 y 视为一行,我试图遍历该列中的每个单元格。