Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создать подзапрос в linq, subquery in linq 
:(
    Опции темы
sergey_85
Дата 15.9.2010, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



Привет! 

Есть объект Groups (DataLayer), хочу в гриде выводит кол-во пользователей в группе, для этого расширяю класс

Код

public partial class Groups
{
private int _userCount = 0;

public UserCount
{
   get { return _userCount;}
   set {_userCount = value;}
}

};


далее пишу linq-запрос

Код

 IQueryable var = (from g in Db.Group
                              select new Group
                                  {
                                      UserCount = (from usr in Db.Users where usr.GroupId == 777 select usr).Count()
                                  }).AsQueryable();


в результате ничего нет, пишет что ссылка на объект не задана. Грид привязан к  Groups (использую DevExpress)

вот такую ошибку даёт:

Explicit construction of entity type 'Db.Group' in query is not allowed.

Как подправить запрос, чтобы в partical класс Groups можно было добавить св-во число пользователей и затем получать объекты одним запросом?

Спасибо!

Это сообщение отредактировал(а) sergey_85 - 15.9.2010, 15:46


--------------------
A good design always pays off.
PM MAIL   Вверх
mrbrooks
Дата 15.9.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



sergey_85, честно говоря вообще то странные вещи ты делаешь.

если уж что и делать, так в первую очередь юзать какое нибудь хранилище данных, к примеру обобщенный List

Код

var groups = new List<Group> ();
//...
groups.Add(new Group {UserCount = (from usr in Db.Users where usr.GroupId == 777 select usr).Count()});
//....
IQueryable q = groups.AsQueryable();

PM MAIL   Вверх
sergey_85
Дата 15.9.2010, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



у меня данные привязаны к гриду, грид (DevExpress) сам следит за получением данных с сервера, если я буду юзать List, то придется сразу получать все записи и потом привязывать, а их в БД оч. много.

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

Код

IQueryable var = (from g in Db.Group
                              select new GroupView
                                  {
                                      Name = g.Name
                                     UserCount = (from usr in Db.Users where usr.GroupId == 777 select usr).Count()
                                  }).AsQueryable();



Это сообщение отредактировал(а) sergey_85 - 15.9.2010, 16:57


--------------------
A good design always pays off.
PM MAIL   Вверх
mrbrooks
Дата 16.9.2010, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



Цитата(sergey_85 @  15.9.2010,  17:53 Найти цитируемый пост)
я вышел из этой ситуации по другому, просто создал еще один класс, так скажем класс-представление GroupView, занес туда все нужные мне св-ва и использую его в выборке.

с таким же успехом ты можешь использовать и анонимный класс.
 
PM MAIL   Вверх
sergey_85
Дата 17.9.2010, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 445
Регистрация: 17.4.2007
Где: Россия, Челябинск

Репутация: нет
Всего: 1



ну в принципе да


--------------------
A good design always pays off.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.