2011-01-30 2 views
3

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

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

Thanx

ответ

0

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

mybindingsource.Filter = "cityID = '1'" 

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

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

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

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

Я попытаюсь изменить синтаксис, как вы предполагали, но как насчет выражений LINQ? как я могу использовать его в bindingsource, не вызывая сущности снова через контекст? – Dabbas

+1

не работает. поддержка фильтра не поддерживается при использовании EF + bindingSource – Dabbas

+0

Ok. Я добавил решение в свой ответ =) – Leonid

0
.where (Function (c) c.cityID = 1) 
+0

Я думаю, что для этого требуется снова вызвать сущности. Мне нужно отфильтровать результаты в источнике привязки, не возвращаясь и получая результаты из базы данных, затем используя где ... – Dabbas

0

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

private BindingSource _bs; 
private List<Entity> _list; 

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

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

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

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

+0

Вы не заполнили _list is empty – AlaaL

+0

@ TheDarkLord: thanx для подсказки. Обновлен пример. Также спасибо за понижение! –

Смежные вопросы