Фильтр BindingSource с структурой сущностей - PullRequest
3 голосов
/ 30 января 2011

Привет
Как я могу отфильтровать результаты в BindingSource, заполненном сущностями (используя EF 4)?
Я попробовал это: mybindingsource.Filter = "cityID = 1"
Но кажется, что источник привязки с платформой сущностей не поддерживает фильтрацию ... я прав? Есть ли другой способ фильтрации (поиска) данных в источнике привязки.

PS:
- Я работаю над приложением Windows, а не ASP.NET.
- Я использую список для отображения результатов.

Thanx

Ответы [ 3 ]

0 голосов
/ 08 февраля 2011
.where (Function (c) c.cityID = 1)
0 голосов
/ 20 февраля 2011

Может быть лучше, чем Леонид:

private BindingSource _bs;
private List<Entity> _list;

_list = context.Entities;
_bs.DataSource = _list;

Теперь, когда требуется фильтрация:

_bs.DataSource = _list.Where<Entity>(e => e.cityID == 1).ToList<Entity>;

Таким образом, вы сохраняете исходный список (который извлекается один раз из контекста)а затем использовать этот оригинальный список для запроса в памяти (без перехода назад и вперед в базу данных).Таким образом, вы можете выполнять все виды запросов к исходному списку.

0 голосов
/ 30 января 2011

Я думаю, вы допустили ошибку в синтаксисе.Вы должны написать Filter следующим образом:

mybindingsource.Filter = "cityID = '1'"

Другой способ - использовать выражения LINQ.

(О LINQ) Почему вам нужно снова звонить в Entety?

Простое решение:

    public List<object> bindingSource;
    public IEnumerable FiltredSource
    {
        get{ return bindingSource.Where(c => c.cityID==1);
    }
...