コード例 #1
0
        public List <UserLogReport> GenerateUserLogReport()
        {
            bool added = false;
            List <UserLogReport> userLogReports = new List <UserLogReport>();
            var tempUserLogReport = userLogRepository.GetUserLogReport();

            foreach (var tempUserLog in tempUserLogReport)
            {
                added = false;
                UserLogReport reportToAdd = new UserLogReport();
                reportToAdd.UserIp     = tempUserLog.UserIp;
                reportToAdd.SearchTime = tempUserLog.SearchTime;
                reportToAdd.Word       = tempUserLog.Word;
                foreach (var logReport in userLogReports)
                {
                    if (logReport.UserIp == reportToAdd.UserIp && logReport.SearchTime == reportToAdd.SearchTime)
                    {
                        logReport.Anagrams.Add(tempUserLog.Anagrams[0]);
                        added = true;
                        break;
                    }
                }
                if (!added)
                {
                    reportToAdd.Anagrams = tempUserLog.Anagrams;
                    userLogReports.Add(reportToAdd);
                }
            }

            return(userLogReports);
        }
コード例 #2
0
        public List <UserLogReport> GetUserLogReport()
        {
            bool added = false;
            List <UserLogReport> userLogReports = new List <UserLogReport>();

            using (var context = new MainAppDatabaseContext())
            {
                var tempUserLogReport = context.UserLog.Join(context.CachedWords,
                                                             log => log.Word,
                                                             cache => cache.Word,
                                                             (log, cache) => new { log, cache })
                                        .Join(context.Words,
                                              o => o.cache.AnagramId,
                                              w => w.Id,
                                              (o, w) => new { o, w })
                                        .Select(r => new UserLogReport
                {
                    UserIp     = r.o.log.UserIp,
                    SearchTime = r.o.log.SearchTime,
                    Word       = r.o.log.Word,
                    Anagrams   = new List <string>()
                    {
                        r.w.Word
                    }
                });
                foreach (var tempUserLog in tempUserLogReport)
                {
                    added = false;
                    UserLogReport reportToAdd = new UserLogReport();
                    reportToAdd.UserIp     = tempUserLog.UserIp;
                    reportToAdd.SearchTime = tempUserLog.SearchTime;
                    reportToAdd.Word       = tempUserLog.Word;
                    foreach (var logReport in userLogReports)
                    {
                        if (logReport.UserIp == reportToAdd.UserIp && logReport.SearchTime == reportToAdd.SearchTime)
                        {
                            logReport.Anagrams.Add(tempUserLog.Anagrams[0]);
                            added = true;
                            break;
                        }
                    }
                    if (!added)
                    {
                        reportToAdd.Anagrams = tempUserLog.Anagrams;
                        userLogReports.Add(reportToAdd);
                    }
                }
            }

            return(userLogReports);
        }
コード例 #3
0
        public IList <UserLogReport> GetUserLogReport()
        {
            bool added = false;
            List <UserLogReport> userLogReports = new List <UserLogReport>();
            List <string>        anagrams       = new List <string>();
            string query = "SELECT UserLog.UserIp, UserLog.SearchTime, UserLog.Word, Words.Word as Anagram " +
                           "FROM((UserLog " +
                           "INNER JOIN CachedWords ON UserLog.Word = CachedWords.Word) " +
                           "INNER JOIN Words ON CachedWords.AnagramId = Words.Id)";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                SqlCommand selectLogs = new SqlCommand(query, connection);
                using (SqlDataReader reader = selectLogs.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        added = false;
                        UserLogReport report = new UserLogReport();
                        report.UserIp     = reader.GetString(0);
                        report.SearchTime = reader.GetDateTime(1);
                        report.Word       = reader.GetString(2);
                        foreach (var logReport in userLogReports)
                        {
                            if (logReport.UserIp == report.UserIp && logReport.SearchTime == report.SearchTime)
                            {
                                logReport.Anagrams.Add(reader.GetString(3));
                                added = true;
                                break;
                            }
                        }
                        if (!added)
                        {
                            report.Anagrams = new List <string> {
                                reader.GetString(3)
                            };
                            userLogReports.Add(report);
                        }
                    }
                }
                connection.Close();
            }
            return(userLogReports);
        }