1
DataView DV = DataTable.AsDataView();
for(int i=0; i<ConditonQueue.Count; i++)
{
     DV.RowFilter = ConditonQueue.ElementAt(i);
}

ここでは、 の最後の要素に対してのみループDVがフィルター処理されConditionQueueます。DVキューに適用されたすべてのフィルター条件 を取得するにはどうすればよいですか? ConditonQueue.ElementAt(i)は、 の有効な式である文字列を返しますRowFilter

すべてを組み合わせてもConditonQueue.ElementAt(i)、私のシナリオでは役に立ちません。RowFilter毎回応募したいです。

それぞれの後に計算を行う必要があるためですRowFilterANDすべての条件を満たしても役に立ちません。

毎回ループで適用されるDVwhenを再作成する他の方法はありますか?RowFilter

4

2 に答える 2

3

あなたの質問が明確ではないので、多くの仮定があります。これを試して

DataView DV = DataTable.AsDataView();

string[] filter = new string[ConditonQueue.Count];
for(int i=0; i<ConditonQueue.Count; i++)
{
     filter[i] =  ConditonQueue.ElementAt(i).ToString();
}

DV.RowFilter = String.Join(" AND ", filter); // filter1 AND filter2 AND ... AND filterN

I don't like your approach, am sorry to say but I think you have to update the DV so that the new filter is applied to already filtered view

for(int i=0; i<ConditonQueue.Count; i++)
{
     DV.RowFilter = ConditonQueue.ElementAt(i);
     DV = DV.ToTable().AsDataView();
}
于 2012-10-25T07:48:55.967 に答える
1

RowFilter は、データ ビューのすべての行に自動的に適用されます。正しい使用法は、キューのすべての条件を適切な文字列式に結合し、その式を RowFilter プロパティに渡すことです。

RowFilter 構文の例については、http: //www.csharp-examples.net/dataview-rowfilter/ も参照してください。

于 2012-10-25T07:44:30.437 に答える