C#-如果字典中的值匹配<;字符串,字符串>;与指定字符串匹配

本文关键字:字符串 gt 串匹配 字符 lt 字典 如果 C#- | 更新日期: 2023-09-27 18:01:48

基本上,SQL表中的一些产品已经分组到一些类别中。例如笔记本电脑、相机、MP3播放器等。现在,当我购买其中一类产品(例如笔记本电脑(时,我需要根据它们的功能/选项进一步深入了解它们。(例如,RAM大小(1 GB、4 GB、..(、处理器类型(Core i7、Core i3..(、硬盘大小(250 GB、500 GB(等。最初,我使用MSSQL的Contains('COLUMNNAME', 'FormsOf(Inflectional, SOMEWORD))进行分类。这种方法很有效,但完成数据库中的所有记录需要将近8小时。(30万条记录(

所以现在我正在考虑一个基于Regex的实现。以下是我到目前为止的想法。也许它很清楚是用这个代码。

 private static void Main(string[] args)
        {
            var productList = new Dictionary<string, string>
                                  {
                                      {"10101", "Samsung NF210 Netbook - 10.1ins - 1GB RAM - 250GB Hard Drive"},
                                      {"10102", "Samsung NP-NF210 Netbook, Intel Atom 1.5GHz, 1GB RAM, 250GB with 10.1 Inch Display, Silver"},
                                      {"10103", "Sony Vaio VPC-F13Z0E/B Laptop, Intel Core i7, 1.73GHz, 6GB RAM, 640GB with 16.4 Inch Display, Black"}
                                  };
            var featureList = new Dictionary<int, string>
                                  {
                                      {1, "1 GB"}, // RAM SIZE
                                      {2, "2 GB"}, // RAM SIZE
                                      {3, "250GB"}, // HARD DRIVE SIZE
                                      {4, "640GB"}, // HARD DRIVE SIZE
                                      {5,"Core i7"}, // Porcessor Type
                                      {6,"Core i3"}, // Porcessor Type
                                      {7,"Netbook"}, // Type
                                      {8,"Laptop"} // Type
                                  };
            foreach (var feature in featureList)
            {
                var keyword1 = feature;
                var results = from result in productList
                              where Regex.IsMatch(result.Value, keyword1.Value, RegexOptions.Singleline)
                              select result;
                foreach (var result in results)
                {
                    Console.WriteLine(feature.Key + " - " + feature.Value);
                    Console.WriteLine(result.Key + " - " + result.Value);
                    Console.WriteLine("");
                }  
            }

            Console.ReadKey();
        }

所以我现在真正的问题是,这种方法行得通吗?我知道我做的方式不如SQL Contains,但它似乎有效。还有其他建议吗?

C#-如果字典中的值匹配<;字符串,字符串>;与指定字符串匹配

使用正则表达式是一个令人难以置信的过度使用,也是一个安全漏洞。

使用String.Contains