Заказать в GroupBy в NHibernate - PullRequest
       2

Заказать в GroupBy в NHibernate

0 голосов
/ 22 февраля 2019

Я новичок в NHibernate, не могу справиться с этой проблемой.

У меня есть такой класс

public class Ticket
{
  public virtual int Id { get; set; }

  public virtual string Name { get; set; }
  public virtual string Number { get; set; }
  public virtual string Comment { get; set; }

  public virtual DateTime IssueDate { get; set; }

  public virtual bool Status { get; set; }
}

Этот класс связан с таблицей Tickets в базе данных.Я хочу получить список всех лет, участвующих в поле Билеты, по полю IssueDate.

Это мой запрос:

var years = session.Query<Ticket>()        
.GroupBy(a => a.IssueDate.Year)        
.ToList();

, и я получаю все вовлеченные годы в списке 2017, 2014, 2016, 2012.... но я не могу применить команду Order к этому запросу!Мне нужно, чтобы список выглядел как 2012, 2014, 2016, 2017 ...

Как я могу это сделать?

1 Ответ

0 голосов
/ 22 февраля 2019

Вы в основном создаете список группирования, а не список лет.

Попробуйте вместо этого:

var years = session.Query<Ticket>()        
    .Select(a => a.IssueDate.Year) // select Year component of the IssueDate
    .Distinct()                    // unique years only
    .OrderBy(year => year)         // order by year
    .ToList();

Ключ в том, чтобы знать, какой тип возвращаемого значения указан послекаждый шаг LINQ, чтобы мы знали, что мы можем сделать с этим типом возвращаемого значения.Иногда это помогает разбить LINQ на отдельные шаги.

// years is IQueryable<int>
var years = session.Query<Ticket>()        
    .Select(a => a.IssueDate.Year); // select Year component of the IssueDate

// unique years only
var uniqueYears = years.Distinct();

// apply order then return List
var orderedYears = uniqueYears.OrderBy(year => year).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...