У вас есть небольшие ошибки.
Первый , тип возвращаемого значения, int объявляется вне кортежа.Добавьте его внутрь.
Затем , вы смешали ключевое слово await.Используйте его там, где вы хотите дождаться завершения асинхронных операций.
Попробуйте это так
public async Task<Tuple<List<IdNamePair>, int>> GetStudents(QueryFilter queryObject)
{
var query = studentEntity.Select(p => new IdNamePair
{
ID = p.ID.ToString(),
Name = p.StudentNameSurname
});
int totalCount = await query.CountAsync();
query = query.ApplyPaging(queryObject);//like Skip(20).Take(10)
var students = await query.ToListAsync();
return new Tuple<List<IdNamePair>, int>(students, totalCount);
}
Extra 1 : здесь вы также можете использовать более короткое объявление кортежа
public async Task<(List<IdNamePair>, int)> GetStudents()
{
...
return (students, totalCount);
}
Extra 2 : в C # 7 вы также можете назвать элементы кортежа, что даст потребителю больше ясности в методе
public async Task<(List<IdNamePair> Students, int TotalCount)> GetStudents()
{
...
return (students, totalCount);
}