#c# #asp.net-mvc #entity-framework #linq
#c# #asp.net-mvc #entity-framework #linq
Вопрос:
У меня есть multiselectlist, который возвращает список значений, я хочу получить данные из базы данных, которая обрабатывает все выбранные идентификаторы,
Например: если пользователь выбрал (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 правильно отправлен в контроллер, но я хочу установить правильное условие для возврата данных для всех выбранных идентификаторов в этой строке:
c.RequestIdStatus == Report.RequestIdStatus
Я получил эту ошибку:
Operator "==" cannot be applied to operands of type "WorkflowStatues" and "List<WorkflowStatues>"
Комментарии:
1. Каков тип данных
c.RequestIdStatus
?2. это перечисление WorkflowStatus, которое принимает числа 1,2,3
Ответ №1:
Обновите свое Where
условие, как показано ниже. Поскольку ваш Report.RequestIdStatus
есть List<WorkflowStatus>
и c.RequestIdStatus
есть WorkflowStatus
, вы можете проверить с помощью .Contains
.
.Where(c => Report.RequestIdStatus.Contains(c.RequestIdStatus))
Комментарии:
1. У меня это не сработало, оно вернет данные, если я выбрал только один элемент из выпадающего списка