Доступ к объекту класса анонимного типа

#c# #anonymous-types

#c# #анонимные типы

Вопрос:

Я создаю объект анонимного типа с помощью запроса LINQ следующим образом:

 var users = from u in context.Users
                    join ug in context.UserGroups on u.UserId equals ug.FkUserId
                    join g in context.Groups on ug.FkGroupId equals g.GroupId
                    where u.FkBranchId == branchId || branchId == -1
                    select new { User = u, MinGroup = g };
  

Я хочу получить доступ к объекту пользователя как к пользователям.Пользователь и передайте его функции сортировки, как показано ниже:

 var orderedList = CustomSort<EFModel.ClientData.User>.GetSortedList(users.User, sortColumn, sortDirection).Skip(pageNo * pageSize).Take(pageSize);
  

но я получаю следующую ошибку:

‘IQueryable<>’ не содержит определения для ‘User’, и не удалось найти доступный метод расширения ‘User’, принимающий первый аргумент типа ‘IQueryable<>’ (вам не хватает директивы using или ссылки на сборку?)

Как я могу это разрешить?

Комментарии:

1. Попробуйте получить к нему доступ, например users.ElementAt(0).User , или users.Select(x => x.User)

2. Это потому users , что это коллекция (еще не материализованная). Если вам нужен один пользователь, вы можете добавить First или Last в свой запрос. Если вы не уверены, что ваш запрос содержит хотя бы один элемент, используйте FirstOrDefault

3. Я действительно хочу получить доступ ко всей коллекции и передать ее общей функции сортировки. Обновлен приведенный выше код.

4. Хорошо, я решил это, как предложил Кунал, спасибо.