Как перевести то, что я делаю с полем [Подтверждено / Всего] в этом запросе, к лямбде? с CAST - PullRequest
1 голос
/ 11 марта 2020

Я пытаюсь получить всех пользователей, которые подтвердили событие, и следующий запрос показывает, как оно должно выглядеть

select us.ServiceId, s.Image, s.Title, s.CreatedTimestamp, (cast(count(us.Answer) as varchar(10))) + 
'/' + (cast((select count(Id) from Users) as varchar(10))) [Confirmed / Total]
from Services s inner join UserServices us on s.Id = us.ServiceId
where us.ServiceId = '5cf37da7-e7ba-4652-8526-96b3ad19fd13'
group by us.ServiceId, s.Image, s.Title, s.CreatedTimestamp

Результат:

resultQuery

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

Я сделал лямбду с большинством полей, кроме общего количества пользователей:

Services.Join(UserServices, s => s.Id, us => us.ServiceId, (s, us) => new { s,us })
.Where(w => (w.us.ServiceId == "5cf37da7-e7ba-4652-8526-96b3ad19fd13"))
.GroupBy(gb => new  
     {
        ServiceId = gb.us.ServiceId, 
        Image = gb.s.Image, 
        Title = gb.s.Title, 
        CreatedTimestamp = gb.s.CreatedTimestamp,
        ConfirmedTotal = gb.us.Answer
     }, gb => new { us = gb.us, s = gb.s })
.Select(sl => new  
     {
        ServiceId = sl.Key.ServiceId, 
        Image = sl.Key.Image, 
        Title = sl.Key.Title, 
        CreatedTimestamp = sl.Key.CreatedTimestamp,
        ConfirmedTotal = sl.Count(x => x.us.Answer)
     })

Результат:

resultQuery2

Итак, как это перевести или есть какой-то способ сделать это?

1 Ответ

0 голосов
/ 12 марта 2020

Я попробовал это, и это сработало:

Services.Join(UserServices, s => s.Id, us => us.ServiceId, (s, us) => new { s,us })
.Where(w => (w.s.ServiceTypeId == "efb6fd56-45be-4402-a960-ed93bcbeea79"))
.GroupBy(gb => new  
     {
        ServiceTypeId = gb.us.ServiceId, 
        Image = gb.s.Image, 
        Title = gb.s.Title, 
        CreatedTimestamp = gb.s.CreatedTimestamp,
        ConfirmedTotal = string.Concat(gb.us.Answer.ToString(), " / ", db.Users.Select(s => s.Id).Count().ToString())
})
.Select(s => new  
     {
        ServiceId = s.Key.ServiceTypeId, 
        Image = s.Key.Image, 
        Title = s.Key.Title, 
        CreatedTimestamp = s.Key.CreatedTimestamp,
        ConfirmedTotal = string.Concat(s.Count(x => x.us.Answer).ToString(), " / ", db.Users.Select(s2 => s2.Id).Count().ToString())
     })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...