【发布时间】:2014-03-31 02:18:42
【问题描述】:
我想知道是否可以在 .NET DataTable 上应用过滤器或选择,以匹配包含 至少一个单词的任何行或搜索词的字母,例如:
搜索字词:“旧金山”
将匹配:“北 旧金山”, “旧金山”、“南洛杉矶”、“山顶北”
**:因为它们包含“San”或“Francisco”或“South”。
我知道这听起来很疯狂,但任何建议都非常感谢!
【问题讨论】:
标签: c# sql regex linq datatable
我想知道是否可以在 .NET DataTable 上应用过滤器或选择,以匹配包含 至少一个单词的任何行或搜索词的字母,例如:
搜索字词:“旧金山”
将匹配:“北 旧金山”, “旧金山”、“南洛杉矶”、“山顶北”
**:因为它们包含“San”或“Francisco”或“South”。
我知道这听起来很疯狂,但任何建议都非常感谢!
【问题讨论】:
标签: c# sql regex linq datatable
DataTable.Select supports like
var str = "South San Francisco";
var filteredRows = dt.Select("Column LIKE '%" + str + "%'");
对于更复杂的过滤器,使用 Linq to DataSets
dt.AsEnumerable().Where(dr =>
{
var wordsSplited = dr.Field<string>("Column").Split(' ');
var words = new HashSet<string>(wordsSplited);
var inputSplitted = str.Split(' ');
return words.Intersect(inputSplitted).Any();
});
【讨论】:
如果我理解清楚,我想你想要这个;
var south = "South";
var san = "San";
var fran = "Francisco";
var filteredRows = dt.Select("Column LIKE '%" + south + "%' OR Column LIKE '%" + san + "%' OR Column LIKE '%" + fran + "%'");
【讨论】:
AND 而不是 OR 因为我只想要包含所有单词的行。我一直忘记你可以在datatable select方法中使用SQL语法,其实很简单