4 .net c# linq entity-framework
我可以使用EF在Linq函数中调用函数吗?
例如
int GetEmployeeStatus(string empID)
{
using (DB = new db())
{
var status = db.EmployeeStatus
.Where(e => e.EmpID == empID && e.StatusEndDate == null)
.Select(e => e.Status)
.SingleOrDefault();
return status;
}
}
Run Code Online (Sandbox Code Playgroud)
现在有一种方法可以在我的applciation中的任何地方使用上面的函数,如下所示:
....
var empList = db.Employees
.Where(e => e.CostCenterID == 123
&& GetEmployeeStatus(e.EmpID) == 1);
....
Run Code Online (Sandbox Code Playgroud)
我不想写这个creteria来反复查找员工状态,有没有办法在概念上做到这一点或类似的东西?
还有一件事,我知道我编写函数的方式将导致每行的数据库跳转,我希望有办法避免这种情况,只是将查询嵌入到Linq中,因此它将被调用一次.
您可以使用扩展功能:
public static class DbContextExtensions
{
public static IQueryable<Employee> WhereX(this IQueryable<Employee> queryable, int id)
{
return queryable.Where(e => e.CostCenterID == 123);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |