我想知道是否可以在.NET DataTable 上应用过滤器或选择,以匹配包含至少一个单词的任何行或搜索字词,例如:
搜索字词:“San South Francisco”
会匹配:“北旧金山”, “旧金山”,“南部洛杉矶”,“峰值北部”
* * :因为它们包含“San”或“Francisco”或“South”。
我知道这听起来很疯狂,但任何建议都非常感谢!
答案 0 :(得分:1)
如果我理解清楚,我想你想要这个;
var south = "South";
var san = "San";
var fran = "Francisco";
var filteredRows = dt.Select("Column LIKE '%" + south + "%' OR Column LIKE '%" + san + "%' OR Column LIKE '%" + fran + "%'");
答案 1 :(得分:0)
DataTable.Select supports like
var str = "South San Francisco";
var filteredRows = dt.Select("Column LIKE '%" + str + "%'");
对于更复杂的过滤器,请使用Linq to DataSet
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();
});