Как вы используете DataView RowFilter, используя ключевое слово «IN» для фильтрации коллекции

Я хотел бы отфильтровать коллекцию, заполненную в DataView. Элемент управления, который я использую для этого, представляет собой флажок со списком с множественным выбором. Строка, возвращаемая из этого, — «val1, val2, val3». Затем я передаю это в оператор запроса sql, чтобы иметь возможность использовать его в качестве выражения фильтра. Однако при назначении моего выражения для dataView.RowFilter = somethingFilterString, у которого есть мое выражение как Something IN (val1, val2, val3), выдается ошибка, что он не может найти столбец val1. Кто может помочь пожалуйста????


person Donald N. Mafa    schedule 13.07.2011    source источник
comment
Я предполагаю, что вы сравниваете строки - вы заключали кавычки вокруг val1 ('val1')?   -  person Austin Salonen    schedule 13.07.2011


Ответы (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);
}
person Austin Salonen    schedule 13.07.2011