C# 如何有效地解析大量字符串?

C# 如何有效地解析大量字符串?,c#,performance,C#,Performance,我有一个数据库,比如说,1000个字符串。每当我的程序的用户编写一个句子时,它都会检查数据库,选择*WHERE trigger=句子,然后返回数据行。考虑到它是一个数据库,这个过程非常快 不过,对于程序来说,在启动时将整个数据库加载到字典中会方便得多。这将允许我使用string.Containssentence,因此子句子可以位于句子中的任何位置,而不是整个句子 只要一千根弦就行了。但是如果数据库变得更大,比如说。。10万串?甚至更多?foreach var w在dictionary.Keys中

我有一个数据库,比如说,1000个字符串。每当我的程序的用户编写一个句子时,它都会检查数据库,选择*WHERE trigger=句子,然后返回数据行。考虑到它是一个数据库,这个过程非常快

不过,对于程序来说,在启动时将整个数据库加载到字典中会方便得多。这将允许我使用string.Containssentence,因此子句子可以位于句子中的任何位置,而不是整个句子

只要一千根弦就行了。但是如果数据库变得更大,比如说。。10万串?甚至更多?foreach var w在dictionary.Keys中,如果w.包含那么多字符串上的命令//etc,可能每秒几次

有没有合适的方法来检查这么多的字符串?
还是我只是不必要的担心?这似乎很多,但计算机更让我吃惊。

如果您愿意在代码中创建动态sql:

SELECT * FROM YOURTABLE WHERE 'The sentence the user typed' like '%' + [StringColumn]+ '%'

这应该根据用户键入的内容检查每个字符串。

我建议更改此问题的标题,因为它太不具体了。实现这一点才是关键。我建议您在本地缓存信息,并在出现规模问题时进行处理。这个问题没有明确的答案。这取决于计算机,进程是什么意思,平均系统负载是什么样子。如果从磁盘读取是不可接受的性能损失,那么使用内存存储策略或内存数据库。如果这个列表是静态的,那么考虑使用这两个。真正的问题是最终目标是什么。改变了标题,尽管我不知道我在问什么。我想检查数据库的任何条目是否是用户在程序中写入的句子的子字符串,然后返回相应字符串的列表供程序使用。它的规模很小,我担心当规模变大时会出很大的问题。所以我可能会问:有没有一种已知的方法可以有效地比较大量的字符串?不过,我想实现与之相反的效果。数据库包含子字符串,用户在程序中输入完整的句子。对不起,如果我没有解释清楚的话。哦,好的。我更新了我的答案。。嗯,对。巧妙的,我觉得很傻,因为我没有意识到这是可能的。谢谢你正确地解释了我的问题,并为我猜出了正确的答案。不过请注意sql注入。你应该确保分析用户输入的句子,这样他们就不会输入任何不需要的sql关键字。。。