2011-01-30 106 views
3


如何篩選BindingSource中存在實體(使用EF 4)的結果?
我試過這樣: mybindingsource.Filter = "cityID = 1"
但似乎結合與實體框架源不支持過濾..我是正確的,是有另一種方式來過濾綁定源(搜索)數據。Filter BindingSource with entity framework

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表達式呢?我怎麼能在綁定源上使用它,而無需通過上下文再次調用實體? – Dabbas 2011-01-30 18:35:27

+1

它不起作用。當使用EF + binding時,不支持過濾器支柱。源 – Dabbas 2011-02-16 08:28:30

+0

好的。我已經添加了解決方案在我的答案=) – Leonid 2011-02-16 16:12:24

0
.where (Function (c) c.cityID = 1) 
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從上下文中刪除一次),然後使用這個原始列表在內存中進行查詢(而不是來回訪問數據庫)。通過這種方式,您可以對原始列表執行各種查詢。