如何使用DataView的RowFilter使用关键字“IN”来过滤集合

时间:2011-07-13 14:44:51

标签: c# dataview rowfilter

我想过滤填充在DataView中的集合。我正在使用的控件是多选复选框Combobox。从此返回的字符串是'val1,val2,val3'。然后我将它传递给sql查询语句,以便能够用作我的FilterExpression。但是,当我将表达式分配给dataView.RowFilter = somethingFilterString时,我的表达式为Something IN(val1,val2,val3)会出现错误,无法找到列val1。有人可以帮忙吗????

1 个答案:

答案 0 :(得分:0)

如果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);
}