i find some common performance issues after profiling the Performance .
1- Using .Any() instead of .Count >0 Link
2- Use IEnumerable insted of List or IList it has the same defirrent as of DataReader and the Data-set . Link
3- Using concurrentdictionary instead of Idictionary , it support using this scenario :
if(conDictionary.TryGetValue("Key",out value)) // at this step the CLR will do one pass to check for the key and if it found it , will return true for the 'tryGetValue' method and will assign the value to the out parameter . so it is 50% faster , second it is a thread safe so there is no concurrent problems .
and i will try to find another point of enchantments for this great System .