为了账号安全,请及时绑定邮箱和手机立即绑定

Linq 查询中的 String.contains

Linq 查询中的 String.contains

C#
慕桂英4014372 2023-09-16 17:09:00
我有以下查询。如果字符串不为空或为空,如何使其成为一个包含字符串的查询if (!string.IsNullOrWhiteSpace(eventRequestModel.Description))    {      if (eventRequestModel.Severity.Count > 0)      {        eventsModelList = (from job in _unitOfWork.Repository<Jobs>().Get(j => eventRequestModel.SiteIds.Contains(j.JobId.ToString())).Result                           join ev in _unitOfWork.Repository<EventLogs>().Get(e => e.Description.Contains(eventRequestModel.Description) && eventRequestModel.Severity.Contains(e.Severity.ToString())).Result on job.JobId equals ev.JobId                           join pnl in _unitOfWork.Repository<Panels>().Get(el => eventRequestModel.SiteIds.Contains(el.JobId.ToString())).Result on ev.PanelId equals pnl.PanelId                           orderby ev.TimeStamp descending, ev.EventId descending                           select new EventsModel                           {                             UTCTimeStamp = ev.TimeStamp,                             EventType = ev.EventType,                             Description = ev.Description,                             PanelName = pnl.Name,                             SiteName = job.Name,                             ChannelGuid = ev.ChannelGuid,                             MapGuid = ev.MapGuid,                             Severity = ev.Severity,                             LogType = ev.LogType,                             Data1 = ev.Data1,                             Data2 = ev.Data2,                             Data3 = ev.Data3,                             Data4 = ev.Data4,                             PanelItemType = ev.PanelItemType,                             PanelItemId = ev.PanelItemId                           }).Take(numOfItems).ToList();      }
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

你的区别是


join ev in _unitOfWork.Repository<EventLogs>().Get(e => e.Description.Contains(eventRequestModel.Description) && eventRequestModel.Severity.Contains(e.Severity.ToString()))


                                                      //^^^^^^^^^^^^^^ Here

您可以使用三元运算符来避免if (!string.IsNullOrWhiteSpace(eventRequestModel.Description))检查


喜欢,


join ev in _unitOfWork.Repository<EventLogs>()

 .Get(e => 

      string.IsNullOrWhiteSpace(eventRequestModel.Description) ? true : e.Description.Contains(eventRequestModel.Description)

      && eventRequestModel.Severity.Contains(e.Severity.ToString()))

你的整个代码看起来像,


if (eventRequestModel.Severity.Count > 0)

      {

        eventsModelList = (from job in _unitOfWork.Repository<Jobs>().Get(j => eventRequestModel.SiteIds.Contains(j.JobId.ToString())).Result

                           join ev in _unitOfWork.Repository<EventLogs>().Get(e => string.IsNullOrWhiteSpace(eventRequestModel.Description) ? true : e.Description.Contains(eventRequestModel.Description) 

                                                                             // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Your answer is here

                           && eventRequestModel.Severity.Contains(e.Severity.ToString())).Result on job.JobId equals ev.JobId

                           join pnl in _unitOfWork.Repository<Panels>().Get(el => eventRequestModel.SiteIds.Contains(el.JobId.ToString())).Result on ev.PanelId equals pnl.PanelId

                           orderby ev.TimeStamp descending, ev.EventId descending

                           select new EventsModel

                           {

                             //Your code

                           }).Take(numOfItems).ToList();

      }

      else

      {

        eventsModelList = (from job in _unitOfWork.Repository<Jobs>().Get(j => eventRequestModel.SiteIds.Contains(j.JobId.ToString())).Result

                           join ev in _unitOfWork.Repository<EventLogs>().Get(e => string.IsNullOrWhiteSpace(eventRequestModel.Description) ? true : e.Description.Contains(eventRequestModel.Description) 

                                                                             // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Your answer is here  

                           && eventRequestModel.Severity.Contains(e.Severity.ToString())).Result on job.JobId equals ev.JobId

                           join pnl in _unitOfWork.Repository<Panels>().Get(el => eventRequestModel.SiteIds.Contains(el.JobId.ToString())).Result on ev.PanelId equals pnl.PanelId

                           orderby ev.TimeStamp descending, ev.EventId descending

                           select new EventsModel

                           {

                             //Your code

                           }).Take(numOfItems).ToList();

      }

    }


查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信