Сортировка данных LINQ - PullRequest
       9

Сортировка данных LINQ

0 голосов
/ 17 сентября 2018

Я пытаюсь заполнить опции выбора тега из вызова JQuery ajax. Я использую Asp.Net Core 2.1 Razor Pages и PostgreSQL в качестве БД.

Вот мой код LINQ на стороне сервера

[HttpGet]
public ActionResult TypeofAccounts()
{
    var result = (from N in _POSContext.TypeOfAccounts
                  select new { label = N.AccountType, id = N.AccountType });

    return Json(result);
}

Работает нормально. Теперь я хочу отсортировать эти результаты по LINQ, поэтому я попробовал следующие способы, но он всегда встречает Npgsql Исключение "column \"label\" does not exist"

var result = (from N in _POSContext.TypeOfAccounts.OrderBy(x=>x.AccountType)
              select new { label = N.AccountType, id = N.AccountType });         

var result = (from N in _POSContext.TypeOfAccounts
              select new { label = N.AccountType, id = N.AccountType }).OrderBy(x => x.label);        

var result = (from N in _POSContext.TypeOfAccounts.OrderBy(x => x.AccountType)
               where N.AccountType != null
               select new { label = N.AccountType, id = N.AccountType });

Я вижу, что в сгенерированном sql отсутствует столбец.

{SELECT x."AccountType" AS id
FROM "TypeOfAccounts" AS x
WHERE x."AccountType" IS NOT NULL
ORDER BY label}

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вам необходимо вызвать запрос из базы данных, используя метод ToList, а затем выбрать свой объект, например:

var result = _POSContext.TypeOfAccounts
            .Where(x => x.AccountType != null)
            .OrderBy(x => x.AccountType)
            .ToList()
            .Select(x => 
                new
                {
                    label = x.AccountType,
                    id = x.AccountType
                }
            );
0 голосов
/ 18 сентября 2018

Вы можете попробовать это

var result = _POSContext.TypeOfAccounts
                .Where(x => x.AccountType != null)
                .OrderBy(x => x.AccountType)
                .ToList()
                .Select(x => 
                    new
                    {
                        label = x.AccountType,
                        id = x.AccountType
                    }
                );
...