DataGridView, фильтрующий событие OnClick (C # WinForm) - PullRequest
0 голосов
/ 22 ноября 2008

Как отфильтровать мое представление данных по значению моего label.text по событию клика? Это значение из моего запроса linq:

dataSet.Tables[0].AsEnumerable().Where(c => c.Field<int>("ageColumn") > 3 &&
     c.Field<int>("ageColumn") < 5).Count();

Давайте просто скажем, что приведенный выше запрос дает мне 12 (label.text = 12), теперь, когда я нажимаю «12», я хочу, чтобы мое представление данных отображало ТОЛЬКО те 12 строк, которые соответствуют моему вышеуказанному запросу.

Ответы [ 2 ]

1 голос
/ 22 ноября 2008

Вам нужно, чтобы оно было динамичным? Возможно, сохраните сам запрос как лямбду в свойстве Tag вашей метки:

Predicate<DataColumn> clause = c => c.Field<int>("ageColumn") > 3 
    && c.Field<int>("ageColumn") < 5;
label1.Tag = clause;

... затем повторно оцените ваш запрос при нажатии на ярлык:

var clause = (sender as Label).Tag as Predicate<DataColumn>; 
myDataSource = dataSet.Tables[0].AsEnumerable().Where(clause);

Я не знаю, сработает ли это, но, по крайней мере, это позволит вам "прикрепить" предложение where к различным ярлыкам.

Я бы также рекомендовал взглянуть на Bindable LINQ , чтобы можно было связать результаты ваших запросов. Очень классные вещи.

0 голосов
/ 22 ноября 2008

Теперь я не использую LINQ, но логика подсказывает, что все, что выражено выражением

dataSet.Tables[0].AsEnumerable().Where(c => c.Field<int>("ageColumn") > 3 &&
 c.Field<int>("ageColumn") < 5)

Содержит данные, которые вы ищете? Нет ли там свойства для перечисления данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...