1

Sharepoint リストに対して 2 パス検索を実行しようとしています。最初のパスでは、KeywordQuery を使用してすべてのアイテムのインデックスを検索しています。2 番目のパスでは、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 で 2 番目のパス フィルターを実行するにはどうすればよいですか?

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[] 行 = dt.Select("(ColumnName1 = 'foo' AND ColumnName2 = 'bar')");

于 2013-09-06T13:19:06.080 に答える