public List <Recommendation_Meta_Item> GetRecommendationR4(Predict_DAO_MCol a, double param) { List <Recommendation_Meta_Item> list1 = new List <Recommendation_Meta_Item>(); List <string> list2 = new List <string>(); List <string> list3 = new List <string>(); List <string> list4 = new List <string>(); Dictionary <string, double> dictionary1 = new Dictionary <string, double>(); Dictionary <string, double> dictionary2 = new Dictionary <string, double>(); Dictionary <string, double> dictionary3 = new Dictionary <string, double>(); Dictionary <string, double> dictionary4 = new Dictionary <string, double>(); Dictionary <string, string> dictionary5 = new Dictionary <string, string>(); List <string> listClusterId = a.GetListClusterID(); Dictionary <string, string> listNewItem = a.GetListNewItem(); foreach (string cluster in listClusterId) { try { Dictionary <string, double> listRateU = a.GetListRateU(cluster); Dictionary <string, double> listRateF = a.GetListRateF(cluster); foreach (KeyValuePair <string, double> keyValuePair1 in listRateU) { Dictionary <string, double> listRateUf = a.GetListRateUF(keyValuePair1.Key); double num1 = 0.0; string FamillyCode = "Not found"; List <string> list5 = new List <string>(); List <double> list6 = new List <double>(); foreach (KeyValuePair <string, double> keyValuePair2 in listRateF) { double num2; if (listRateUf.ContainsKey(keyValuePair2.Key)) { double num3 = keyValuePair2.Value; double num4 = keyValuePair1.Value; double num5 = keyValuePair2.Value; num2 = param * num5 * (1.0 / num4 - 1.0 / num3); } else { num2 = 0.0; } if (num2 > num1) { num1 = num2; FamillyCode = keyValuePair2.Key; } } if (num1 != 0.0) { double num2 = (double)a.getQTYR4(keyValuePair1.Key, FamillyCode, 1); foreach (KeyValuePair <string, string> keyValuePair2 in listNewItem) { if (keyValuePair2.Value.Equals(FamillyCode)) { list1.Add(new Recommendation_Meta_Item() { UserID = keyValuePair1.Key, RecommendType = ConstantValues.RC_TYPE_LRS04, MetaItemID = keyValuePair2.Key, Quantity = num2, Score = num1 }); } } } } } catch (Exception ex) { } } return(list1); }