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每次都申请。

因为我需要在每个RowFilter. AND所有条件都无济于事。

有没有其他方法可以重新创建DV每次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

我不喜欢您的方法,很抱歉,但我认为您必须更新 DV,以便将新过滤器应用于已过滤的视图

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 属性。

还可以查看http://www.csharp-examples.net/dataview-rowfilter/以获取 RowFilter 语法的示例。

于 2012-10-25T07:44:30.437 回答