Динамическая группа Linq по количеству - PullRequest
0 голосов
/ 29 июня 2018

SQL

 select Country,Count(City) as City from Customers group by Country

Контроллер sortable_top = Страна, город

     public ActionResult _Query(List<string> sortable_bot, List<string> sortable_top)
    {
        IQueryable result;
        List<M_Customers> result2;
        string gro = string.Join(",", sortable_top);         
        using (var context = new NwContext())
        {
            result = context.Customers;
            result = result.GroupBy("new (" + gro + ")", "it");
            result2 = result.Select<M_Customers>("new (it.Key as Key , Count(City) as Count)").ToList();
        }
        return PartialView(result2);
    }

Я хочу преобразовать SQL-запрос, подобный этому, в linq. Я получаю сообщение об ошибке.

 result2 = result.Select<M_Customers>("new (it.Key as Key , it.Count() as Count)").ToList();

Если я пишу так, я получаю группу по количеству, но я не хочу этого. Я хочу количество сгруппированных городов

Ответы [ 2 ]

0 голосов
/ 29 июня 2018
result2 = result.Select<M_Customers>("new (it.Key as Key , it.Select(City).Count() as Count)").ToList();

Я исправил вот так

0 голосов
/ 29 июня 2018

Сделай как:

"new (it.Key as Key , Count(City != null) as Count)"

Потому что в конце COUNT(something) в SQL означает что-то вроде SUM(CASE WHEN something IS NOT NULL THEN 1 ELSE 0 END). Обратите внимание, что поддержка COUNT DISTINCT!

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