Я пытаюсь использовать новое свойство EF Core Shadow для разбиения на страницы на стороне сервера, сортировки и фильтрации результатов списка.
Сортировка и разбиение на страницы работают отлично, за исключением случаев, когда я хочу отсортировать столбец по свойству дочернего объекта UserName
.Есть ли способ использовать свойство shadow для сортировки по дочернему свойству свойства?
Примерно так: .OrderBy(p => EF.Property<object>(p, "user.UserName"))
Модель сущности:
public class Player
{
public int Id { get; set; }
public int UserId { get; set; }
public int GamePlayed { get; set; }
public int GameWon { get; set; }
public int Rank { get; set; }
public DateTime LastPlayedDate { get; set; }
public DateTime JoinDate { get; set; }
public bool Active { get; set; }
public virtual User User { get; set; }
}
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Description { get; set; }
}
Запрос:
public IEnumerable<Player> GetPlayers(string colName, string filter,
string sortOrder, int pageNumber, int pageSize)
{
var skip = pageNumber * pageSize;
var results = (sortOrder == "asc") ?
_context.Players.Where(p => p.Active)
.OrderBy(p => EF.Property<object>(p, colName))
.Skip(skip).Take(pageSize)
.Include(p => p.User)
:
_context.Players.Where(p => p.Active)
.OrderByDescending(p => EF.Property<object>(p, colName))
.Skip(skip).Take(pageSize)
.Include(p => p.User);
return results;
}