我有一个asp.net应用程序。
我有一个仓库,里面有一个查询方法。我有 AlertStatusEnum
,像这样。
public enum AlertStatusEnum
{
/// <summary>
/// Alerts where done is true
/// </summary>
Done = 1,
/// <summary>
/// Alerts where done is false
/// </summary>
NotDone,
/// <summary>
/// Returns complete list of Alerts either done or NotDone
/// </summary>
All
}
我有一个查询方法,像这样:
public async Task<List<Alert>> GetAllAlertsForOrganisation(int organisationId, DateTime? beginDate, DateTime? endDate, AlertStatusEnum statusEnum)
{
return await GetAlerts(i => i.OrganisationId == organisationId
&& (endDate == null || i.CreatedAt <= endDate)
&& (beginDate == null || i.CreatedAt >= beginDate)
&& i.IsDone)
.ToListAsync();
}
和 IsDone
看起来是这样的。
public bool IsDone { get; set; }
所以,我唯一想要的东西,是以下。
statusEnum
-参数为 AlertStatusEnum.Done
的警报,只返回有 IsDone
==truestatusEnum
-参数为 AlertStatusEnum.NotDone
的警报,只返回有 IsDone
==falsestatusEnum
-参数为 AlertStatusEnum.All
,返回所有警报,尽管 IsDone
-属性的价值。但如何做到这一点?
谢谢你
通过下面的代码,你可以根据以下内容过滤数据。statusEnum
-参数:
public async Task<List<Alert>> GetAllAlertsForOrganisation(int organisationId, DateTime? beginDate, DateTime? endDate, AlertStatusEnum statusEnum)
{
var isDone = statusEnum == AlertStatusEnum.Done;
return await GetAlerts(i => i.OrganisationId == organisationId
&& (endDate == null || i.CreatedAt <= endDate)
&& (beginDate == null || i.CreatedAt >= beginDate)
&& (i.IsDone == isDone || statusEnum == AlertStatusEnum.All))
.ToListAsync();
}