Beispiel #1
0
        public static IEnumerable <Tuple <string, int> > GetTopWordsByColumn(List <PersonName> personNameList,
                                                                             ColumnsEnum column, int iRank, bool isDescending)
        {
            Func <PersonName, string> getPersonProperty   = GetFunctionStrategy(column);
            Dictionary <string, int>  wordCountDictionary = new Dictionary <string, int>();

            personNameList.ForEach(personName => { GetWordCount(getPersonProperty(personName), wordCountDictionary); });
            var wordCounts = wordCountDictionary.Select(e => new Tuple <string, int>(e.Key, e.Value));

            wordCounts = isDescending ? wordCounts.OrderByDescending(t => t.Item2) : wordCounts.OrderBy(t => t.Item2);

            return(wordCounts.Take(iRank));
        }
Beispiel #2
0
        static void PrintTopByField(List <PersonName> personNames, ColumnsEnum column, int iRank, bool isDescending, bool useWholeWord = true)
        {
            IEnumerable <Tuple <string, int> > topNames = useWholeWord ? NameAnalyzer.GetTopByColumn(personNames, column, iRank, isDescending)
                : NameAnalyzer.GetTopWordsByColumn(personNames, column, iRank, isDescending);

            Console.WriteLine($"------------------{(isDescending ? "TOP" : "LAST") } {iRank } BY {((object)column).ToString()} ");
            if (topNames != null)
            {
                foreach (var topName in topNames)
                {
                    Console.WriteLine($"{topName.Item1}: {topName.Item2}");
                }
            }
        }
        private DataTable PrepareDataTable(string tableName, ColumnsEnum selectedColumn, object value)
        {
            var table = new DataTable(tableName);

            table.Columns.Add(Enum.GetName(typeof(ColumnsEnum), ColumnsEnum._int), typeof(int));
            table.Columns.Add(Enum.GetName(typeof(ColumnsEnum), ColumnsEnum._varChar3), typeof(string));

            var row = table.NewRow();

            row[(int)selectedColumn] = value;

            table.Rows.Add(row);

            return(table);
        }
Beispiel #4
0
        private static Func <PersonName, string> GetFunctionStrategy(ColumnsEnum column)
        {
            Func <PersonName, string> getPersonProperty = (x) => x.FirstName;

            switch (column)
            {
            case ColumnsEnum.FirstLastName:
                getPersonProperty = (x) => x.FirstLastName;
                break;

            case ColumnsEnum.SecondLastName:
                getPersonProperty = (x) => x.SecondLastName;
                break;
            }

            return(getPersonProperty);
        }
Beispiel #5
0
        public static IEnumerable <Tuple <string, int> > GetTopByColumn(List <PersonName> personNameList, ColumnsEnum column, int iRank, bool isDescending)
        {
            Func <PersonName, string> getPersonProperty = GetFunctionStrategy(column);

            var groups = personNameList.GroupBy(getPersonProperty, new StringComparer());

            groups = isDescending ? groups.OrderByDescending(g => g.Count()) : groups.OrderBy(g => g.Count());

            return(groups.Take(iRank).Select(g => new Tuple <string, int>(g.Key, g.Count())).ToList());
        }