Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LINQ - группировка со статистикой по всем колонка 
:(
    Опции темы
swetik1981
Дата 23.3.2012, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Имеется таблица в датасете, содержащая некоторые сведения.
Как посредством одного LINQ-запроса (VB.NET) вывести уникальный перечень значений в одном из столбцов таблицы и статистику уникальных значений во всех остальных столбцах?
Чтоб было понятней, пример:

Вот исходная таблица:

Код

Курс      Фам        Имя      Отч        Год

первый    Иванов     Иван     Петрович   1980
второй    Петров     Петр     Петрович   1996
второй    Петров     Сидор    Иванович   1997
третий    Сидоров    Петр     Иванович   1995
первый    Иванов     Сидор    Сидоров    1997
второй    Сидоров    Иван     Иванович   1996



А вот таблица - результат, в которой приведена статистика встречаемости уникальных фамилий, имён, отчеств и годов рождения студентов для каждого из курсов:

Код

Курс      Фам        Имя      Отч       Год

первый    1          2        2         2
второй    2          3        2         2
третий    1          1        1         1



Как такое сделать посредством одного единственного LINQ-запроса (VB.NET) ?
PM MAIL   Вверх
Kolovorot
Дата 23.10.2012, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 245
Регистрация: 12.1.2009

Репутация: 1
Всего: 3



Это группировка по одной колонке. Сделал на C# и на примере List<Student>  smile 
Код

 public class Student
    {
        public string Curs { get; private set; }
        public string Surname { get; private set; }
        public string Firstname { get; private set; }
        public string Patronymic { get; private set; }
        public int yearBirthday { get; private set; }

        public Student(string curs, string surname, string firstname, string patronymic, int year)
        {
            this.Curs = curs;
            this.Surname = surname;
            this.Firstname = firstname;
            this.Patronymic = patronymic;
            this.yearBirthday = year;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<Student> students = new List<Student>()
            {
                new Student("первый", "Иванов","Иван", "Петрович", 1980),   
                new Student("первый",    "Иванов",     "Иван",     "Петрович",   1980),
                new Student("второй",    "Петров",     "Петр"  ,   "Петрович",   1996),
                new Student("второй",    "Петров",     "Сидор",    "Иванович",   1997),
                new Student("третий",    "Сидоров",    "Петр",     "Иванович",   1995),
                new Student("первый",    "Иванов",     "Сидор",    "Сидоров",    1997),
                new Student("второй",    "Сидоров",    "Иван",     "Иванович",   1996)
            };

           var studentCurses = students.GroupBy(s => s.Curs)
                                        .Select(g => new
                                        {
                                            Curs = g.Key,
                                            SurnameCount = g.Select(s=>s.Surname).Distinct().Count(),
                                            FirstnameCount = g.Select(s=>s.Firstname).Distinct().Count(),
                                            Patronymic = g.Select(s=>s.Patronymic).Distinct().Count(),
                                            Year = g.Select(s=>s.yearBirthday).Distinct().Count()
                                        });

            foreach (var curs in studentCurses)
            {
                Console.WriteLine("{0} {1} {2} {3} {4}", curs.Curs,
                                                curs.SurnameCount,
                                                curs.FirstnameCount,
                                                curs.Patronymic,
                                                curs.Year);
            }

        }


    }

   

    




Это сообщение отредактировал(а) Kolovorot - 23.10.2012, 11:03
--------------------
Никогда еще истина не повисала на руке безусловного. Фридрих Ницше. Так говорил Заратустра
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.1245 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.