我一直在编写一个简单的C#应用程序,通过解析csv文件来执行地址搜索。用户只需输入地址的一部分,完整的地址就会在csv文件解析后返回。
到目前为止,这是GUI:

元素名称如下:
我解析的csv文件有不同列长的行,我的目标是遍历每一行/列,在用户单击搜索按钮后返回第一个最接近的匹配。这是CSV文件内容的示例:
MK1 1AS, Royal Mail, Bletchley Delivery Office, Dane Road, Bletchley, Milton Keynes
MK1 1AX, Webbs Tool Hire, Unit 1-3, Stadium Business Court, Denbigh West Industrial Estate, Denbigh Road, Bletchley, Milton Keynes
MK1 1AX, Crown Precision Engineering Ltd, Unit 4-5, Stadium Business Court, Denbigh West Industrial Estate, Denbigh Road, Bletchley, Milton Keynes
MK1 1AX, Unit 6, Stadium Business Court, Denbigh West Industrial Estate, Denbigh Road, Bletchley, Milton Keynes
MK4 4FL, 2, Levens Hall Drive, Westcroft, Milton Keynes
MK4 4FL, 28, Levens Hall Drive, Westcroft, Milton Keynes
MK46 5EF, 1, Mow Mead, Olney
MK46 5EF, 16, Mow Mead, Olney
MK2 2RD, 55, Westfield Road, Bletchley, Milton Keynes
MK2 2RD, 81, Westfield Road, Bletchley, Milton Keynes
MK12 5EG, 1, Woodland View, Wolverton, Milton Keynes
MK12 5EG, 20, Woodland View, Wolverton, Milton Keynes
MK13 7BX, 1, Harrowden, Bradville, Milton Keynes
MK16 8EU, 70, Queens Avenue, Newport Pagnell
MK7 7DT, 1, Spearmint Close, Walnut Tree, Milton Keynes
MK18 1JL, H S B C, Market Hill, Buckingham我已经尝试过编写这个代码,但是现在每当我尝试搜索什么东西时,我都会得到一个空白的消息框。此外,目前看来,我只在一列中搜索,而不是所有列(第1栏),只返回该栏的结果。如何将搜索扩展到包括所有列?
private void SearchButton_Click(object sender, EventArgs e)
{
String addressText = GetAddress(AddressEntry.Text);
MessageBox.Show(addressText);
}
String GetAddress(String addressText)
{
var strLines = File.ReadLines("pca_mk_addresslist.csv");
foreach (var line in strLines)
{
if (line.Split(',')[1].Equals(addressText))
return line.Split(',')[1];
}
return "";
}发布于 2014-08-10 18:54:20
您的现有循环循环遍历所有输入行,在它的正文中,您将每一行分割成一个数组,但只访问数组的单个元素进行比较。
您需要将数组的每个元素与输入进行比较。
foreach (var line in File.ReadLines("pca_mk_addresslist.csv")
{
var fields = line.Split(',');
foreach(var field in fields)
{
if(field == addressText)
return fields[1]
}
return String.Empty;
}发布于 2014-08-10 18:49:12
foreach (var line in strLines)
{
var result = line.Split(',').FirstOrDefault(x => x == addressText);
if (result != null)
return result;
}https://stackoverflow.com/questions/25231863
复制相似问题