Хорошо, что-то вроде этого. Мне нужно немного информации, чтобы быть уверенным, хотя
Немного в очереди? Это имеет значение для linq, а не для SQL. Я также не знаю ваших контекстных имен, но вы должны получить представление.
var query = Context.ExportQueues.Select(x => new {
QueueItem = x.QueueItem,
Sent = !x.Queued ? 1 : 0,
Queued = x.Queued ? 1 : 0,
Exported = x.Success ? 1 : 0,
Failed = !x.Success ? 1 : 0 })
.GroupBy(x => x.QueueItem)
.Select(g => new {
QueueItem = g.Key,
Sent = g.Sum(x => x.Sent),
Queued = g.Sum(x => x.Queued),
Exported = g.Sum(x => x.Exported),
Failed = g.Sum(x => x.Failed)
}).ToList();
РЕДАКТИРОВАНИЕ Вы также можете комбинировать их, выполнив проверку на лету в запросе. Я всегда склонен сначала записывать его, как указано выше, когда работаю над ним, хотя более сложные агрегаты могут быть немного сложными для отладки, если есть ошибки:
var query = Context.ExportQueues
.GroupBy(x => x.QueueItem)
.Select(g => new {
QueueItem = g.Key,
Sent = g.Sum(x => !x.Queued ? 1 : 0),
Queued = g.Sum(x => x.Queued ? 1 : 0),
Exported = g.Sum(x => x.Success ? 1 : 0),
Failed = g.Sum(x => !x.Success ? 1 : 0 )
}).ToList();
person
Gats
schedule
03.01.2012