在C#中搜索字符串数组列表的有效方法

时间:2013-07-21 18:06:51

标签: c# search

我有这样的结构,

String[] variable1= new String["ABC", "FSS" , "FSFS", "GDGDDS"];
String[] variable2= new String["SA", "GS" , "QE", "HF"];


static List<String[]> allList = new List<String[]>();;

allList .Add(variable1);
allList .Add(variable2);

当提供String时,我想搜索allList并提供结果,如果找到了数组。

以高效方式存档的任何帮助?

2 个答案:

答案 0 :(得分:5)

两个提供的解决方案都以线性时间运行,如果你有很多单词并且进行大量查询,这将会太慢。

您可以使用词典。字典在内部使用哈希表,它会快得多。

要将所有字符串放入字典中,您可以执行以下操作:

Dictionary<String, String[]> dict = new Dictionary<String, String[]>();
foreach(String[] arr in allList)
    foreach(String str in arr)
        dict[str] = arr;

然后你可以轻松搜索它:

String s = "ABC";
if(dict.ContainsKey(s))
    // result is dict[s]
else
    // String is not in any array

希望它有所帮助!

答案 1 :(得分:0)

你也可以尝试这个

var output=allList.Where(x=>(string.Join(",", x)+",").IndexOf(input+",")!=-1)
                  .FirstOrDefault();