如何使用 DataView 的 RowFilter 使用关键字“IN”来过滤集合
Posted
技术标签:
【中文标题】如何使用 DataView 的 RowFilter 使用关键字“IN”来过滤集合【英文标题】:How do you use DataView's RowFilter using keyword 'IN' to filter collection 【发布时间】:2011-10-04 13:52:15 【问题描述】:我想过滤填充在 DataView 中的集合。我为此使用的控件是一个多选复选框组合框。从这里返回的字符串是 'val1, val2, val3'。然后我将它传递给一个 sql 查询语句,以便能够用作我的 FilterExpression。但是,当将我的表达式分配给 dataView.RowFilter = somethingFilterString 时,我的表达式为 Something IN (val1, val2, val3) 时会出现无法找到列 val1 的错误。有大神可以帮忙吗???
【问题讨论】:
我猜你是在比较字符串——你在val1
('val1'
) 周围加了引号吗?
【参考方案1】:
如果val1, val2, val3
的值是字符串(例如"apples, pears, bananas"
),那么您需要查询文本来显示它们是字符串,否则它必须假定它们是列名。
如果您要像这样构建逗号分隔的列表:
var csv = string.Join(",", comboBox.SelectedValues); //guess on combo box property
...那么您可以执行以下操作来获取带引号的值:
[Test]
public void SO6680770()
var cols = new[] "apples", "pears", "bananas" ;
var csv = string.Join(", ", cols.Select(s => string.Concat("'", s, "'")));
Assert.AreEqual("'apples', 'pears', 'bananas'", csv);
【讨论】:
以上是关于如何使用 DataView 的 RowFilter 使用关键字“IN”来过滤集合的主要内容,如果未能解决你的问题,请参考以下文章
DataSetDataTableDataView三者关系及DataView 常见用法