如何匹配确切的string值或与Excel列单元格最接近的匹配

我有一个inputIP地址的代码,然后它将循环search该IP的excel列中最接近的匹配项。 它只是循环每一个IP,我怎么把它的论点匹配的IP?

using System; using System.Net; using Microsoft.Office.Interop.Excel; using Excel = Microsoft.Office.Interop.Excel; using System.Data.OleDb; using System.Data; using System.Runtime.InteropServices; using System.Text.RegularExpressions; namespace Investigations { class Program { static void Main(string[] args) { IPAddress addr = IPAddress.Parse("8.8.8.8"); IPHostEntry entry = Dns.GetHostEntry(addr); Console.WriteLine("IP Address: " + addr); Console.WriteLine("Host Name: " + entry.HostName); Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\subnets.xlsx"); Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; Excel.Range xlRange = xlWorksheet.UsedRange; for (int i = 0; i < xlWorksheet.Rows.Count; i++) { IPAddress excelIP = IPAddress.Parse("8.8.8.8"); if (IPAddress.TryParse(xlWorksheet.Cells[i + 1, 1].Value.ToString(), out excelIP)) { Console.Write(excelIP.ToString()); Console.WriteLine(" -This id was found"); } } } 

比较你find的那个和你正在search的那个(你也可以把excelIP的声明移出循环 – 你只需要声明一次)。 我还创build了一个标志,以防您需要根据您在退出循环后是否find要查找的IP来采取某些操作:

 bool foundIP = false; IPAddress excelIP; for (int i = 0; i < xlWorksheet.Rows.Count; i++) { if (IPAddress.TryParse(xlWorksheet.Cells[i + 1, 1].Value.ToString(), out excelIP)) { // Compare the IP address we found with the one we're looking for if (excelIP.Equals(addr)) { foundIP = true; break; // Exit the for loop since we found it } } } if (foundIP) { Console.WriteLine("Found the IP address!"); // If you need to do something with the IP, you can use either excelIP // or addr, since they are both the same at this point } else { Console.WriteLine("IP address was not found."); }