#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. Хорошо, я решил это, как предложил Кунал, спасибо.