我有一个已知的工作存储库。使用structuremap作为IOC。
但我不能使用以下内容进行任何Iqueryable搜索:
private IRepository<Employee> _employeeRepository;
public Employee GetEmployeeByUserName(Employee employee)
{
return _employeeRepository.Find()
.Where(i => i.User_Name == employee.User_Name)
as Employee;
}
EmployeeRepository:
public IQueryable<T> Find()
{
var table = this.LookupTableFor(typeof(T));
return table.Cast<T>();
}
IRepository:
public interface IRepository<T> where T: class
{
void Commit();
void Delete(T item);
IQueryable<T> Find();
IList<T> FindAll();
void Add(T item);
}
是什么给了???
答案 0 :(得分:2)
Find方法不期望泛型类型,而where子句返回一个IEnumerable,您尝试将其作为Employee进行转换。用FirstOrDefault替换where子句。例如
_employeeRepository.Find()
.FirstOrDefault(i => i.User_Name == employee.User_Name)