Как использовать DataView RowFilter, используя ключевое слово IN для фильтрации коллекции - PullRequest
1 голос
/ 13 июля 2011

Я хотел бы отфильтровать коллекцию, заполненную в DataView.Элемент управления, который я использую для этого, является множественным флажком Combobox.Возвращаемая строка: val1, val2, val3.Затем я передаю это в SQL-запрос, чтобы иметь возможность использовать его в качестве FilterExpression.Однако при назначении моего выражения dataView.RowFilter =thingFilterString, в котором мое выражение имеет вид Something IN (val1, val2, val3), выдает ошибку, из-за которой не может быть найден столбец val1.Любой, кто может помочь, пожалуйста ????

1 Ответ

0 голосов
/ 13 июля 2011

Если значения 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);
}
...