我正在尝试对Sharepoint列表执行两遍搜索。在第一次遍历中,我使用KeywordQuery来搜索所有条目的索引。在第二次遍历中,我通过构建select语句来应用用户选择的列值过滤器。
ResultTableCollection rtc = kwqry.Execute();
ResultTable rt = rtc[ResultType.RelevantResults];
dt = new DataTable();
//Load Data Table
dt.Load(rt, LoadOption.OverwriteChanges);
DataRow[] rows = dt.Select("ColumnName1 = 'foo' AND ColumnName2 = 'bar'"); 其中的列可以是Sharepoint列表中的多值查阅列。第一步是正常工作,并在DataTable中返回正确数量的匹配项。但是,当我尝试应用Select语句时,我得到以下错误:Cannot perform '=' operation on System.String[] and System.String。将列转换为字符串而不是字符串数组会导致相同的错误,就像使用in运算符一样。
我是否错误地构建了select语句?我如何在我的DataTable上运行我的第二个通过过滤器?
发布于 2013-09-06 21:18:47
你有没有尝试过LINQ?
DataTable t1 = new DataTable();
var rows = from x in t1.AsEnumerable()
where x.Field<string[]>("column1name").Contains("foo")
select x;您必须在Where子句中指定字段类型...
希望能有所帮助。
发布于 2013-09-06 21:19:06
试试这个,它会起作用的:
DataRow[]行= dt.Select("(ColumnName1 = 'foo‘DataRow[] ColumnName2 = 'bar')");
https://stackoverflow.com/questions/18658497
复制相似问题