1

我有一个枚举,我想用字典制作一个映射器。

这是我的枚举:

public enum PrintOrderStatus
{
    Pending = 1,
    Confirmed = 2,
    PreparedForPrint = 3,
    PreparedForDevlivery = 4,
    Delivered = 5,
    Canceled = int.MaxValue,
}

这是我的字典:

var map = new Dictionary<PrintOrderStatus, PrintOrderStatus[]>
{
    { PrintOrderStatus.Pending, new[] { PrintOrderStatus.Canceled, 
                                        PrintOrderStatus.Confirmed } },
    { PrintOrderStatus.Confirmed, new[] { PrintOrderStatus.PreparedForPrint, 
                                          PrintOrderStatus.PreparedForDevlivery } },
    { PrintOrderStatus.PreparedForDevlivery, new[] { PrintOrderStatus.Delivered } },
};

鉴于我的实体的当前状态,我如何才能获得数组中不同键的值?

4

3 回答 3

1

要获取与字典中的键关联的值,您应该执行以下操作:

var myStatuses = map[currentStatus];
于 2013-02-11T16:01:29.083 回答
1
var posibleStatuses = map[entity.currentStatus]
于 2013-02-11T16:01:30.647 回答
1

其他两个答案涉及从键到值,但是以防万一您想从值到键(问题根本不清楚),请尝试:

var keys = map.Where(x => x.Value.Contains(PrintOrderStatus.Canceled))
              .Select(x => x.Key);

请注意,这将返回将其作为值的所有键的列表。如果您只想要第一个,请使用.First()而不是.Select().

于 2013-02-11T16:09:54.253 回答