1

我正在尝试对 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 运算符一样。

我是否错误地构建了我的选择语句?如何在我的 DataTable 上运行我的第二次通过过滤器?

4

2 回答 2

2

您是否尝试过使用 LINQ?

DataTable t1 = new DataTable();
var rows = from x in t1.AsEnumerable()
           where x.Field<string[]>("column1name").Contains("foo")
           select x;

您必须在 Where 子句中指定字段类型...

希望能帮助到你。

于 2013-09-06T13:18:47.420 回答
0

尝试使用它,它将起作用:

DataRow[] rows = dt.Select("(ColumnName1 = 'foo' AND ColumnName2 = 'bar')");

于 2013-09-06T13:19:06.080 回答