问题
I have an IReliableDictionary and need to take the items in the dictionary and move them in to an IList to return from my reliable service.
It seems I can't do a .ToList of any kind, so I'm sure I'm approaching it wrong.
public async Task<IList<CustomerOrderItem>> GetOrdersAsync()
{
IReliableDictionary<CustomerOrderItemId, CustomerOrderItem> orderItems =
await this.StateManager.GetOrAddAsync<IReliableDictionary<CustomerOrderItemId, CustomerOrderItem>>(CustomerOrderItemDictionaryName);
Dictionary<KeyValuePair<CustomerOrderItemId, CustomerOrderItem>, KeyValuePair<CustomerOrderItemId, CustomerOrderItem>> items = orderItems.ToDictionary(v => v);
IList<CustomerOrderItem> list = orderItems.ToList(); ???
...
}
Any ideas on how to take the items from the dictionary and put them in to the list?
回答1:
IReliableDictionary<K,V>
implements IEnumerable<KeyValuePair<K, V>>
, so you can do a ToList
.
Maybe ensure the namespace is imported.
回答2:
IReliableDictionary (just like an IDictionary) is IEnumerable of key value pairs, so you can go this way:
public async Task<IList<CustomerOrderItem>> GetOrdersAsync()
{
IReliableDictionary<CustomerOrderItemId, CustomerOrderItem> orderItems =
await this.StateManager.GetOrAddAsync<IReliableDictionary<CustomerOrderItemId, CustomerOrderItem>>(CustomerOrderItemDictionaryName);
var list = orderItems.Select(kvp => kvp.Value).ToList();
return list;
}
来源:https://stackoverflow.com/questions/34459822/convert-ireliabledictionary-to-ilist