使用字符串的任何匹配过滤DataTable

时间:2014-02-27 14:55:31

标签: c# sql regex linq datatable

我想知道是否可以在.NET DataTable 上应用过滤器或选择,以匹配包含至少一个单词的任何行或搜索字词,例如:

  

搜索字词:“San South Francisco”

     

会匹配:“北旧金山”,   “旧金山”,“南部洛杉矶”,“峰值北部

     

* * :因为它们包含“San”或“Francisco”或“South”。

我知道这听起来很疯狂,但任何建议都非常感谢!

2 个答案:

答案 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();
                        });