【发布时间】:2017-12-07 18:55:04
【问题描述】:
我有这段代码使用带有 EF 的 SP 从服务器获取日期
List<sp_PlacementSearchResult_Result> listResults = new List<sp_PlacementSearchResult_Result>();
var query = Context.sp_PlacementSearchResult(request.HasamaFormId, request.DepartmentId, request.InstitutionNum, request.IsSigned).AsQueryable();
这是有效的,现在我想在结果中添加一些过滤器,如下所示:
if (role.PermissionId.Equals((int)Permission.Institution))
{
query = query.Where(form => PropRole.InstitutionNum.Contains((int)form.OrganizationOrInstitutionNum));
}
当我尝试做时在函数的末尾
listResults = query.ToList();
我收到错误消息,“可为空的对象必须有一个值。”
ToList() 只有在进入 if 语句时才会失败。
附注: 起初我用没有 SP 的 EF 完成了这个查询:
var query = Context.APP_AuthorityHasamaForm.AsQueryable();
这样,即使 ToList() 进入 if 语句,我也没有问题
感谢
编辑:这是所有功能:
IEnumerable<sp_PlacementSearchResult_Result> IAuthorityHasamaFormRepository.GetByRequestFromSP(PlacementRequest request, APP_Role role, PropertiesRole PropRole)
{
List<sp_PlacementSearchResult_Result> listResults = new List<sp_PlacementSearchResult_Result>();
request.HasamaFormId = (request.HasamaFormId > 0) ? request.HasamaFormId : null;
request.InstitutionNum = (request.InstitutionNum > 0) ? request.InstitutionNum : null;
if (request.StartDate.HasValue)
{
request.StartDate = new DateTime(request.StartDate.Value.Year, request.StartDate.Value.Month, request.StartDate.Value.Day, 00, 00, 00);
}
if (request.EndDate.HasValue)
{
request.EndDate = new DateTime(request.EndDate.Value.Year, request.EndDate.Value.Month, request.EndDate.Value.Day, 00, 00, 00);
}
var query = Context.sp_PlacementSearchResult(request.HasamaFormId, request.DepartmentId, request.InstitutionNum, request.IsSigned, request.IdentityIdSign,
request.StartDate, request.EndDate, request.AuthorityNum, request.CertificateNum, null).AsQueryable();
if (role.PermissionId.Equals((int)Permission.Department))
{
query = query.Where(form => PropRole.DepartmentId.Contains(form.DepartmentId));
}
if (role.PermissionId.Equals((int)Permission.Institution))
{
query = query.Where(form => PropRole.InstitutionNum.Contains((int)form.OrganizationOrInstitutionNum));
}
try
{
listResults = query.ToList();
return listResults;
}
catch (Exception e)
{
throw;
}
listResults = query.ToList();
return listResults;
}
【问题讨论】:
-
什么意思是“在函数的末尾”。您能否向我们展示您在 `if` 块或整个函数周围的代码。
-
我添加了所有功能
标签: c# sql-server entity-framework linq