如何解决基于多选列表的列表从数据库中查询所有匹配的值
我有一个多选择列表,它返回一个值列表,我想从数据库中获取所有选定ID的数据,
例如:如果用户选择了(RequestIdStatus = [1,2,3]),我想从数据库中获取数据,其中 RequestIdStatus是1,2和3
这是我的ViewModel:
public class ReportViewModel
{
public string RequestCode { get; set; }
public string RequestDate { get; set; }
public string ComplaintIdType { get; set; }
public string ComplaintAgainstIdType { get; set; }
public List< WorkflowStatus> RequestIdStatus { get; set; } // النتيجة
}
我的模特:
public class RequestModel
{
public long RequestCode { get; set; }
public DateTime RequestDate { get; set; }
public DateTime RequestExpireDate { get; set; }
public WorkflowStatus RequestIdStatus { get; set; }
}
我的WorkFlowStatues类;
public enum WorkflowStatus
{
[EnumMember]
New = 1,[EnumMember]
JusticeWritingUnderProccessing = 2,[EnumMember]
JusticeWritingReply = 3,}
控制者:
public ActionResult GeneratingReports(ReportViewModel Report)
{
var RequestReport = _requestServices.GetRequetsForReport().Where(c =>
c.RequestIdStatus == Report.RequestIdStatus
).Select(c => new ReportViewModel
{
RequestCode = c.RequestCode.ToString(),RequestDate = DateHelper.ConvertGregorianToUmAlQura(c.RequestDate,"dd / MM / yyyy"),ComplaintIdType = AppCache.ComplaintTypeName(c.ComplaintIdType),ComplaintAgainstIdType = AppCache.ComplaintAgainstTypeName(c.ComplaintAgainstIdType),RequestStatus = AppCache.RequestStatusName(c.RequestIdStatus),RequestResult = AppCache.RequestRName(c.RequestIdResult),AgencyDocumentationEmployeeId = _requestServices.GetUserFullNameById(c.AgencyDocumentationEmployeeId)
}).ToList();
string ReportJson = JsonConvert.SerializeObject(RequestReport);
return Content(ReportJson);
}
RequestIdStatus的列表已正确发布到控制器,但我想设置正确的条件以在此行返回所有选定ID的数据:
c.RequestIdStatus == Report.RequestIdStatus
我收到此错误:
Operator "==" cannot be applied to operands of type "WorkflowStatues" and "List<WorkflowStatues>"
解决方法
如下更新您的Where
条件。由于您的Report.RequestIdStatus
是List<WorkflowStatus>
,而c.RequestIdStatus
是WorkflowStatus
,因此可以使用.Contains
进行检查。
.Where(c => Report.RequestIdStatus.Contains(c.RequestIdStatus))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。