private static void VerifyIsInitialized <U>(QID <U> other) { if (!other.mInitialized) { other.ComplainUninitialized("Other"); } }
public bool Equals(QID <TQualification> obj) { #if DEBUG VerifyThisIsInitialized(); VerifyIsInitialized(obj); #endif return(obj.IDValue == IDValue); }
public TValue GetValue(QID <TQualification> key) => Data.GetValue(key);
public int CompareTo(QID <TQualification> other) => IDValue.CompareTo(other.IDValue);
// This uses "U" type as the interim key for search!! ; but exposes TValue - obvious useful when TValue works as a key. public Func <TValue, QID <TQualification> > BuildReverseSearchBasedOnInterimKey <U>(Func <TValue, U> f) => Data.Select((x, ord) => Tuple.Create(f(x), QID.Build <TQualification>(ord))).ToDictionary().Let(d => new Func <TValue, QID <TQualification> >(x => d.GetValue(f(x))));
// This uses "U" type as the search clause, i.e. no intermediary transformer - **ONLY** use when U can serve as a search key. public Func <U, QID <TQualification> > BuildReverseSearchBasedOnValueDictionary <U>(Func <TValue, U> f) => Data.Select((x, ord) => Tuple.Create(f(x), QID.Build <TQualification>(ord))).ToDictionary().GetValue;
public QualifiedPackedStore <TQualification, U> Transformed <U>(Func <QID <TQualification>, TValue, U> f) => new QualifiedPackedStore <TQualification, U>(Data.Select((v, ord) => f(QID.Build <TQualification>(ord), v)).ToArray());
public TValue GetValue(QID <TQualification> key) => Data[key.IDValue];
public IEnumerable <Tuple <QID <TQualification>, TValue> > GetIDQualifiedValues() => Data.Select((x, ord) => Tuple.Create(QID.Build <TQualification>(ord), x));