Huyyhaha Ответов: 1

Как подсчитать количество вхождений после группировки по


у меня есть таблица данных
КоА -------- тенбан
LCK        bataimuihong 
LCK        bank 
LCK        bank 
LCK        bank
KHNGOAI    bank
KHNGOAI    bataimuihong
KHNGOAI    bataimuihong

how can i count the number of occurrences after grouped by 'khoa' and 'tenban'


Что я уже пробовал:

<pre>var data = (from a in _en.EMR_BenhAn.Where(p => p.NgayLap >= tungay && p.NgayLap <= denngay).ToList()
                            join dmba in _en.DM_BenhAn on a.KyHieuBA equals dmba.KyHieuBA
                            join kh in _en.EMR_Khoa on a.MaBAn equals kh.MaBAn
                            join kp in _en.KPhongs on kh.MaKPnh equals kp.MaKP
                            select new
                            {
                                kp.TenKP,
                                dmba.TenBenhAn
                            }).GroupBy(p => new
                            {
                                p.TenBenhAn,
                                p.TenKP

                            }).ToList();
                var data2 = data.Select(p=> new
                    {
                        TenBenhAn = p.Key.TenBenhAn,
                        TenKP = p.Key.TenKP
                    }).OrderBy(p=> p.TenKP).ToList();


                var sl = data.Select(p => p.Key.TenBenhAn);
                xrSL.Text = sl.ToString();

1 Ответов

Рейтинг:
8

Richard Deeming

Попробуй:

.GroupBy(
    p => new { p.TenBenhAn, p.TenKP }, 
    (key, items) => new { key.TenBenhAn, key.TenKP, Count = items.Count() })
Перечислимый.Метод GroupBy (System.Linq) | Microsoft Docs[^]


Huyyhaha

Я могу посмотреть, как он вышел, в настоящее время я просматриваю его так, но у него есть ошибка "строка"

Richard Deeming

Если вы хотите, чтобы кто-то помог вам исправить ошибку, вам необходимо предоставить полную информацию об этой ошибке.

Huyyhaha

Я получаю ошибку отображения, когда использую эту команду !
var sl = данные.Где(p => p.TenBenhAn.Count() > 0).Список();

xrSL.Текст = сл.Метод toString();

Richard Deeming

Еще раз: если вы хотите, чтобы кто-то помог вам исправить ошибку, ВАМ НУЖНО ОБЪЯСНИТЬ, В ЧЕМ ЗАКЛЮЧАЕТСЯ ОШИБКА!

Huyyhaha

Мне очень жаль, что у моей сети возникли проблемы! Я не знаю, как это объяснить! Но когда я запускаю его он показывает эту ошибку
system.collections.generic.list 1[ System.boolean ]

Richard Deeming

Это не ошибка. Это результат вызова ToString для объекта, класс которого не переопределяет метод - он просто возвращает имя типа.

List<T> не переопределяет ToString, так что ваш sl.ToString() вызов просто вернет имя типа: System.Collections.Generic.List`1[System.Boolean]

Вам нужно решить, как вы хотите отобразить список, и построить строку самостоятельно. Например:

xrSL.Text = string.Join(", ", sl);

Huyyhaha

Спасибо, что так было лучше!

Huyyhaha

но для того я их прошу, чтобы это были текущие счетчики в каждой группе, делающие как угодно.Не могу в этой команде отобразить 'count'
.Метод groupBy(
Р =&ГТ; новое { стр. TenBenhAn, стр. TenKP },
(ключ, элементы) => new { ключ.Тенбенхан, ключ.Tenk, Count = предметы.Рассчитывать() })

Richard Deeming

Этот код даст вам список объектов, содержащий два ключевых свойства и количество элементов. Как вы будете отображать этот список, зависит только от вас.

Huyyhaha

Большое вам спасибо за вашу помощь