根据多选列表从数据库中查询所有匹配的值
Posted
技术标签:
【中文标题】根据多选列表从数据库中查询所有匹配的值【英文标题】:Query all the matched values from the database based on a list of multiselect list 【发布时间】:2020-12-08 12:44:47 【问题描述】:我有一个返回值列表的多选列表,我想从匹配所有选定 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>"
【问题讨论】:
c.RequestIdStatus
的数据类型是什么?
枚举 WorkflowStatus 采用数字 1,2,3
【参考方案1】:
如下更新您的Where
条件。由于您的Report.RequestIdStatus
是List<WorkflowStatus>
和c.RequestIdStatus
是WorkflowStatus
,您可以使用.Contains
检查。
.Where(c => Report.RequestIdStatus.Contains(c.RequestIdStatus))
【讨论】:
这对我不起作用,如果我只从下拉列表中选择一项,它将返回数据以上是关于根据多选列表从数据库中查询所有匹配的值的主要内容,如果未能解决你的问题,请参考以下文章