我有一个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个字符串与第二个值,依此类推。
有没有办法用其他方法做到这一点?
答案 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();