LINQ выражение с множественным счетом - PullRequest
1 голос
/ 12 февраля 2020

Буду признателен за помощь в написании следующего SQL запроса с несколькими count в одиночном выражении LINQ

select count(MemoNo) as totalOrder, 
count(distinct shopId) as shops, 
sum(TotalAmount) as totalAmount 
from Sales;

Пример данных

| MemoNo | shopId | TotalAmount |
|-------------------------------|
|     a10|      s2|          200|
|     a11|      s2|          220|
|     a12|      s3|          100|
|     a13|      s3|           20|
|     a14|      s3|          100|
|     a15|      s4|           50|
|     a16|      s4|           20|
|     a17|      s4|           90|

Пример вывода должен выглядеть следующим образом

| totalOrder | shops | totalAmount | 
|------------|-------|-------------|
|          8 |     3 |          800|

1 Ответ

2 голосов
/ 12 февраля 2020

Попробуйте следующим образом

var totalOrder = Sales.Select(p => p.MemoNo).Count();
var shop = Sales.Select(p => p.shopId).Distinct().Count();
var totalAmount = Sales.Sum(p => p.TotalAmount);

Обновлено

Демонстрация по Do tnet Fiddle

    var tempData  = Sales.GroupBy(p => p.shopId).Select(g => new 
    {
       shops = g.Count(),
       totalAmount = g.Sum(p => p.TotalAmount),
       totalOrder = g.Count()
    });
    var result = new 
    {
        totalOrder = tempData.Sum(p => p.totalOrder),
        shops = tempData.Count(),
        totalAmount = tempData.Sum(p => p.totalAmount)
    };
    // Output: { totalOrder = 8, shops = 3, totalAmount = 800 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...