Получайте уникальных пользователей за час / день / месяц - PullRequest
0 голосов
/ 26 сентября 2019

Я довольно новичок в выражениях LINQ и мне нужно создать диаграмму в MVC.

На круговой диаграмме есть часть меток: в случае часа она будет иметь 1,2 ... 24 Еслидень, затем 1,2 ... 31 Если месяц, то 1,2 ... 12

Так что для каждого случая мне нужно получить уникальных пользователей по идентификатору пользователя, так как моя таблица содержит данные разговора, где пользователь существует несколько раз,Тогда я должен вернуть соответствующий массив.На данный момент у меня есть:

ViewBag.monthArray= db.Conversation.ToList().GroupBy(p => DateTime.Parse(p.Date_Time).Month).ToArray();

и код диаграммы:

var monthChart= @Html.Raw(Json.Encode(@ViewBag.monthArray));
var areaChartData = {
    labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
    datasets: [
        {
            label: 'Month Count',
            fillColor: 'rgba(210, 214, 222, 1)',
            strokeColor: 'rgba(210, 214, 222, 1)',
            pointColor: 'rgba(210, 214, 222, 1)',
            pointStrokeColor: '#c1c7d1',
            pointHighlightFill: '#fff',
            pointHighlightStroke: 'rgba(220,220,220,1)',
            data: [monthChart]
        }
    ]
}

Как я могу подсчитать уникальных пользователей для каждого случая?Как я могу разделить счет за час / день / месяц?

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете группировать по нескольким полям, передавая анонимный объект, подобный этому

ViewBag.monthArray= db.Conversation.ToList().GroupBy(p => new { DateTime.Parse(p.Date_Time).Month, p.UserID })
                .ToArray();

Если вы проверите этот результат, вы можете увидеть, что еще вы можете сделать.Если вам просто нужно JSON для месяца и идентификаторов пользователей, добавьте .Select (g => new {g.Key.Month, g.Key.UserID}) перед ToArray.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...