比较一个字符串与多个其他字符串

时间:2014-04-28 18:11:26

标签: c#

我有一个winform C#sql app,我正在检索数据并存储在字符串中。像这样,。

string a1 = Convert.ToString(srj[@"Sub_1"]);
                    string a2 = Convert.ToString(srj[@"Sub_2"]);
                    string a3 = Convert.ToString(srj[@"Sub_3"]);
                    string a4 = Convert.ToString(srj[@"Sub_4"]);
                    string a5 = Convert.ToString(srj[@"Sub_5"]);
                    string a6 = Convert.ToString(srj[@"Sub_6"]);
                    string a7 = Convert.ToString(srj[@"Sub_7"]);
                    string a8 = Convert.ToString(srj[@"Sub_8"]);
                    string a9 = Convert.ToString(srj[@"Sub_9"]);
                    string a10 = Convert.ToString(srj[@"Sub_10"]);
                    string a11 = Convert.ToString(srj[@"Sub_11"]);
                    string a12 = Convert.ToString(srj[@"Sub_12"]);

这里我正在检索12个值。现在我想将这些值中的每一个与a1,a2 ... a29等字符串进行比较。如果两个字符串都匹配相应的复选框,则必须检查字符串。 但是我看到它的方式,我必须比较30个字符串与第一个值,然后30个字符串与第二个值,依此类推。

有没有办法用其他方法做到这一点?

2 个答案:

答案 0 :(得分:0)

也许你可以使用Aho-Corasick字符串匹配算法。

它允许您在输入字符串中定位有限字符串集的元素,同时匹配集合中的所有模式。

http://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_matching_algorithm

答案 1 :(得分:0)

好的 - 试试这个

String[] myList1 = new String[] {"a","ab", "ba", "cc", "ab"};
String[] myList2 = new String[] {"a","abc", "ba", "c2c", "ab1", "cccc", "ba"};

var keyResult = myList1.Where(x=>myList2.Contains(x)).ToArray();

提供一个包含" a"的数组。和" ba"。两个数组的长度不必相同。它还将重复的项目作为单个项目处理。

然后还有集合交集方法。

var keyResult2 = myList1.Intersect(myList2).ToArray();