2012-09-03 42 views
0

我usign EF 4與具有被編碼爲下面的通用查詢方法庫patren:EF通用存儲庫查詢方法,如何選擇一列?

public IEnumerable<T> Query(Expression<Func<T, bool>> filter) 
    { 
     return objectSet.Where(filter); 
    } 

我知道如何查詢選擇一個完整的對象,它是象下面這樣:

context.PeriodRepository.Query(a => a.EntityId == selectedEntityId); 

你能指導我如何查詢不強迫對象,而不是如何只得到一個屬性,我想把屬性直接放入文本框。

感謝

編輯

我已經決定從查詢中得到充分的對象:

MyType obj = context .Signatories1Repository.Query(a=>a.Id==signatory1Id); 

,但它顯示了一個錯誤:

無法從IEnumarable轉換爲類型。顯式轉換存在。你錯過了演員嗎?

你能請教我如何使它工作正確嗎?

+0

你能否提供'Signatories1Repository'的實現? – ivowiblo

回答

2

爲了只獲得一個屬性(或某些屬性),你需要調用做一個轉型,將只檢索Select() LINQ擴展方法你想要什麼:

context.PeriodRepository.Query(a => a.EntityId == selectedEntityId) 
     .Select(x => x.TheProperty); 

我也建議返回IQueryable<T>而不是您的查詢方法中的IEnumerable<T>。事實上,我會避免使用查詢方法,只是讓您的存儲庫實現IQueryable<T>,以便您可以使用開箱即用的linq擴展方法,如Where()

+2

請添加一些關於如何回答這個問題的細節。 –

+0

謝謝@ ivowiblo,你能看到我的編輯和指導。 再次感謝。 – haansi

+0

@ivowiblo你能解釋一下嗎?「事實上,我會避免查詢方法,只是讓你的倉庫實現IQueryable ,所以你可以直接使用像Where()那樣的開箱即用的linq擴展方法。」通過一個例子?謝謝 – haansi

相關問題