首先,是数据源,我用的是一个Excel表
然后可以把表存在数据库里面,或者存在内存上面
我把excel导入到内存转化成table
然后用linq语句查找匹配的输入拼音
最后,输出前五个,备选
代码如下:
string path = Environment.CurrentDirectory;
path = @"D:\vsprogram\testWpf\testWpf\bin\Debug\1.xlsx";// @"\text.xlsx";
dataTableDatas = LoadExcel(path);
public DataTable LoadExcel(string pPath)
{
if (!File.Exists(pPath))
{
return null;
}
string conns = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=No;IMEX=1;'", pPath);
conn = new OleDbConnection(conns);
conn.Open();
OleDbCommand cmd2 = new OleDbCommand();
cmd2.Connection = conn;
string sql = "select * from [Sheet1$]";// +sheetName.Replace('.', '#') + "$]";
cmd2.CommandText = sql;
OleDbDataAdapter da = new OleDbDataAdapter(cmd2);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
if (ds.Tables.Count > 0)
{
return ds.Tables[0];
}
else
{
return ds.Tables[0];
}
}
catch
{
ds = null;
throw new Exception("从Excel文件中获取数据时发生错误!");
}
finally
{
conn.Close();
da.Dispose();
ds.Dispose();
GC.Collect();
}
}
然后是linq访问table表,实现字符串匹配输出
var obj = from soda in dataTableDatas.AsEnumerable() where GetStringFromRow(soda[1].ToString(), serch_s) select soda[2];
object[] y = obj.ToArray();
然后是绑定到combobox里面 comboBox1.Items.AddRange(li.ToArray());
大概思路就是那样,具体字符串操作和条件还要仔细判断;