【问题标题】: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

标签: c# asp.net-mvc entity-framework linq


【解决方案1】:

如下更新您的Where 条件。由于您的Report.RequestIdStatusList&lt;WorkflowStatus&gt;c.RequestIdStatusWorkflowStatus,您可以使用.Contains 检查。

.Where(c => Report.RequestIdStatus.Contains(c.RequestIdStatus))

【讨论】:

  • 这对我不起作用,如果我只从下拉列表中选择一项,它将返回数据
猜你喜欢
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多