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 运算符一样。
我是否正确构建了我的选择语句?如何在数据表上运行第二个传递筛选器?
你试过 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')");