切换枚举和多次返回

Pic*_*oll 6 c# enums filter switch-statement multiple-return-values

我有两个对象:

public enum BugReportStatus
{
    OpenUnassigned = 0,
    OpenAssigned = 1,
    ClosedAsResolved = 2,
    ClosedAsRejected = 3
}
Run Code Online (Sandbox Code Playgroud)

public enum BugReportFilter
{
    Open = 1,
    ...
    Closed = 4,
}
Run Code Online (Sandbox Code Playgroud)

我想switch case根据BugReportFilter选择创建一个我的输出将是具体的BugReportStaus.

所以我创建了一个方法 CheckFilter

private BugReportStatus Checkfilter(BugReportFilter filter)
{
    switch (filter)
    {
        case BugReportFilter.Open:
            return BugReportStatus.OpenAssigned;

        case BugReportFilter.Closed:
            return BugReportStatus.ClosedAsResolved;
    }
};
Run Code Online (Sandbox Code Playgroud)

问题是,在BugReportFilter.Open选项的情况下,我应该返回BugReportStatus.OpenAssigned AND BugReportStatus.OpenUnassigned,有没有办法在一次返回中连接这两个选项?

Tim*_*ter 4

你可以返回IEnumerable<BugReportStatus>

private IEnumerable<BugReportStatus> Checkfilter(BugReportFilter filter)
{
    switch (filter)
    {
        case BugReportFilter.Open:
            return new[]{ BugReportStatus.OpenAssigned, BugReportStatus.OpenUnassigned };

        case BugReportFilter.Closed:
            return new[]{ BugReportStatus.ClosedAsResolved };
    }
};
Run Code Online (Sandbox Code Playgroud)

然后你可以用来Enumerable.Contains检查它是否是 fe BugReportStatus.OpenAssigned

bool isOpenAssigned = Checkfilter(someFiler).Contains(BugReportStatus.OpenAssigned);
Run Code Online (Sandbox Code Playgroud)