【发布时间】:2022-01-01 21:41:30
【问题描述】:
在我的 C# Form 脚本中,我有一个包含 2-3k 个元素的数组。我需要在该数组中找到一个特定值,但不对其应用 for 循环。循环通过 2-3k 个元素会导致几秒钟的延迟,我不希望这样。这类似于网站的 Mysql 数据库。
在 PHP 网站中,我在索引数据库上使用 where 子句,因此即使表有 100 万行,我也能够在 0.020 秒内获得我需要的唯一行。 C# 有类似的东西吗?
这是我想要实现的目标。
using System;
using System.Linq;
public class Program
{
public static float[] data = {140, 160, 170, 180, 190, 54235243,234,4213,1234,543,1234,3215,52134,1234,222,333,444,555,666,777,888,999};
public static void Main()
{
var queryLowNums =
from num in data
where num > 140 and num < 170
select num;
// num should be 160
}
}
上面的这段代码是无效的,我只是想举例说明我想做什么。在这种情况下是否有这样的语法/命令或任何可以帮助我的东西。循环通过 2-3k 个元素可能需要一秒钟或 2 秒 idk。我知道如果我有给定元素的索引,它将直接加载它而无需 for 循环。但是不知道如何实现。
【问题讨论】:
-
2k-3k 值不算什么。为什么您认为需要几秒钟才能完成?
-
在数据库中,值存储在树状数据结构中。如果对值进行排序并进行二进制搜索,则可以在 c# 中实现类似的效果。这实际上取决于您的数据和用例,哪种策略是最好的。
-
考虑使用更好的结构,例如 hashmap/
Dictionary,或者使用二分查找的排序列表,这可能是最快的。这与visual-studio无关,请不要发送垃圾标签
标签: c# floating-point