C# - 两个大字符串数组的模糊比较

Oli*_*n04 3 c# linq string loops compare

我需要在B中找到"部分"存在于A中的所有字符串.

B = [ "Hello World!", "Hello Stack Overflow!", "Foo Bar!", "Food is nice...", "Hej" ]
A = [ "World", "Foo" ]
C = B.FuzzyCompare(A) // C = [ "Hello World!", "Foo Bar!", "Food is nice..." ]
Run Code Online (Sandbox Code Playgroud)

我一直在研究使用Levenshtein Distance Algorithm问题的"模糊"部分,以及迭代的LINQ.但是,A*B通常会导致超过15亿次比较.

我该怎么办呢?有没有办法快速"几乎比较"两个字符串列表?

Tim*_*ter 5

也许仅仅比较子串就足够了,这会更有效:

var C = B.Where(s1 => A.Any(s2 => s1.IndexOf(s2, StringComparison.OrdinalIgnoreCase) >= 0)).ToList();
Run Code Online (Sandbox Code Playgroud)