我将EF 4与存储库patren一起使用,它具有通用查询方法,编码如下:
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转换为type。现有的显式转换。你错过了演员吗?
请告诉我如何使其正常工作?
答案 0 :(得分:2)
为了只检索属性(或某些属性),您需要调用Select()
linq扩展方法进行转换,以便检索您想要的内容:
context.PeriodRepository.Query(a => a.EntityId == selectedEntityId)
.Select(x => x.TheProperty);
我还建议在Query方法中返回IQueryable<T>
而不是IEnumerable<T>
。实际上,我会避免使用查询方法,只需使您的存储库实现IQueryable<T>
,这样您就可以使用开箱即用的linq扩展方法,例如Where()
。