C#:如何从关键字查询返回的结果表中选择特定行

本文关键字:结果 选择 返回 查询 关键字 | 更新日期: 2023-09-27 18:30:29

我正在尝试对 SharePoint 列表执行两次搜索。在第一次传递中,我使用关键字查询来搜索所有项目的索引。在第二遍中,我通过构建 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 列表中的多值查阅列。第一次传递工作正常,并在数据表中返回正确数量的匹配项。但是,当我尝试应用 Select 语句时,出现以下错误:Cannot perform '=' operation on System.String[] and System.String 。将列转换为字符串而不是字符串数组会导致相同的错误,就像使用 IN 运算符一样。

我是否正确构建了我的选择语句?如何在数据表上运行第二个传递筛选器?

C#:如何从关键字查询返回的结果表中选择特定行

你试过 LINQ 吗?

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

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

希望对您有所帮助。

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

数据行[] 行 = dt。选择("(列名称 1 = 'foo' AND 列名称 2 = 'bar')");