Хорошо, как-то так.Мне понадобится немного информации, чтобы быть уверенным, хотя
В очереди немного?Это имеет значение в 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();