首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:如何从KeywordQuery返回的ResultsTable中选择特定行?

C#:如何从KeywordQuery返回的ResultsTable中选择特定行?
EN

Stack Overflow用户
提问于 2013-09-06 21:01:21
回答 2查看 836关注 0票数 1

我正在尝试对Sharepoint列表执行两遍搜索。在第一次遍历中,我使用KeywordQuery来搜索所有条目的索引。在第二次遍历中,我通过构建select语句来应用用户选择的列值过滤器。

代码语言:javascript
复制
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上运行我的第二个通过过滤器?

EN

回答 2

Stack Overflow用户

发布于 2013-09-06 21:18:47

你有没有尝试过LINQ?

代码语言:javascript
复制
DataTable t1 = new DataTable();
var rows = from x in t1.AsEnumerable()
           where x.Field<string[]>("column1name").Contains("foo")
           select x;

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

希望能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2013-09-06 21:19:06

试试这个,它会起作用的:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18658497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档