Несколько агрегатных функций в одном запросе с использованием выражения LINQ [duplicate]

Добавить на верхнюю страницу

protected void Page_Load(object sender, EventArgs e)
{    
    if (!Page.IsPostBack)
    {
        //Code display data
    }
}
2
задан MrSmith42 4 February 2013 в 02:04
поделиться

2 ответа

Конечно, просто заверните свои три счета в POCO или анонимном типе:

using (var invoices = new AccountingEntities())
{
    var c = (from i in invoices.Transactions
             select new 
             {
                 c1 = invoices.Count(i=>i.Type = 0),
                 c2 = invoices.Count(i=>i.Type = 1),
                 c3 = invoices.Count(i=>i.Type = 2)
             }).Single();           
}

Также, выставляйте свой контекст, как я показываю.

7
ответ дан Craig Stuntz 25 August 2018 в 22:35
поделиться

Чтобы объединить произвольные подзапросы, используйте фиктивный однострочный набор результатов, из которого вы введете нужные подзапросы. Предполагая, что db представляет ваш DbContext, код для подсчета типов счетов будет выглядеть следующим образом:

var counts = (
    from unused in db.Invoices
    select new {
        Count1 = db.Invoices.Count(i => i.Type == 0),
        Count2 = db.Invoices.Count(i => i.Type == 1),
        Count3 = db.Invoices.Count(i => i.Type == 2)
    }).First();

Если вы хотите получить общее количество всех типов, используйте группировку:

var counts =
    from i in db.Invoices
    group i by i.Type into g
    select new { Type = g.Key, Count = g.Count() };
1
ответ дан Edward Brey 25 August 2018 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: