public int?this[PiecesKind kind, BoxState state] { get { return(_dictPieces.Where(p => p.Key.Item1 == state && p.Key.Item2 == kind).Sum(p => p.Value)); } set { _dictPieces[Tuple.Create(state, kind)] = value; } }
/// <summary> /// Returns sum of pieces in boxes /// </summary> /// <param name="states"></param> /// <param name="kind"></param> /// <returns></returns> public int?this[BoxState states, PiecesKind kind] { get { var results = new List <int?>(2); if (states.HasFlag(BoxState.Cancelled)) { results.Add(_pieces[INDEX_STATE_CANCELLED, (int)kind]); } if (states.HasFlag(BoxState.InProgress)) { results.Add(_pieces[INDEX_STATE_UNVERIFIED, (int)kind]); } if (states.HasFlag(BoxState.Completed)) { results.Add(_pieces[INDEX_STATE_VERIFIED, (int)kind]); } return(results.Sum()); } set { switch (states) { case BoxState.Completed: _pieces[INDEX_STATE_VERIFIED, (int)kind] = value; break; case BoxState.Cancelled: _pieces[INDEX_STATE_CANCELLED, (int)kind] = value; break; case BoxState.InProgress: _pieces[INDEX_STATE_UNVERIFIED, (int)kind] = value; break; default: throw new NotSupportedException(); } } }
public int?GetPieces(PiecesKind kind, BoxState[] states) { return(_dictPieces.Where(p => states.Contains(p.Key.Item1) && p.Key.Item2 == kind).Sum(p => p.Value)); }