super_user Ответов: 1

Запрос Linq с выражением lamba


Я создаю SQL-запрос, теперь я пытаюсь преобразовать это в LINQ с лямбда выражением

select Catg_type.Catg_type,Program_type.Prog_name ,Year_info.year,
COUNT(Std_info.catg_id) as total_students from Std_info 
inner join Catg_type on Std_info.Catg_id=Catg_type.Catg_id
INNER join Program_type on Std_info.Prog_id=Program_type.Prog_id
inner join Year_info on Std_info.year_id=Year_info.year_id
where @year_p=Year_info.year
group by Catg_type,Program_type.Prog_name,Year_info.year


Что я уже пробовал:

я пробую это
var query=a.Std_info
    .Join(
        a.Catg_type,
        catg=>catg.Catg_id,
        std=>std.Catg_id,
        (catg,std)=>new{catg=catg,std=std})
    .Join(
        a.Program_type,
        pg=>pg.catg.Prog_id,
        pt=>pt.Prog_id,
        (pg,pt)=>new{pg=pg,pt=pt})
    .Join(
        a.Year_info,
        yr=>yr.pg.catg.year_id,
        yi=>yi.year_id,
        (yr,yi)=>new{yr=yr,yi=yi})
    .Select(
        s=>new{
            Catg_type=s
        })

в этой части выберите (s= & gt;new{
Catg_type=з
})
когда я пишу s. а потом, когда я пытаюсь вызвать program_name, catg_type, year, то нет никаких имен

не могли бы вы помочь

OriginalGriff

"я думаю, что не правильно" не помогает нам - оно ничего не говорит нам о том, какую проблему вы испытываете.
Расскажите нам, что произошло: что он сделал такого, чего вы не ожидали, или не сделал того, что вы сделали? Как выглядят ваши входные данные и каков результат этих двух запросов?
Были ли какие-нибудь сообщения? Ошибки? Аварии?

Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли.
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

super_user

хорошо теперь я попробую это сделать
запрос ВАР=а.Std_info
.Присоединиться(а.Catg_type,catg=&ГТ;catg.Catg_id,СТД=&ГТ;СТД.Catg_id, (catg, std)= & gt;new{catg=catg, std=std})
.Присоединиться(а.Program_type,ПГ=&ГТ;ПГ.catg.Prog_id,пт=&ГТ;пт.Prog_id,(ПГ,ст)=>, новые{ПГ=ПГ,пт=пт})
.Присоединиться(а.Year_info,Ир=&ГТ;год.ПГ.catg.year_id,Йи=&ГТ;Йи.year_id,(г,ю)=>, новые{УГ=УГ,ух=ух})
. Выберите (s= & gt;new{
Catg_type=з
})

super_user

я эту часть .Выберите (s= & gt;new{
Catg_type=з
})

как я называю этот Catg_type.Catg_type, Program_type.Prog_name ,Year_info.год,

Richard Deeming

Вы должны быть в состоянии использовать что-то вроде:
Catg_type = s.yi.pt.catg.Catg_type

Вы хотите сказать, что не получаете никаких элементов в списке Intellisense?

super_user

да

1 Ответов

Рейтинг:
4

Maciej Los

Ваш запрос linq, кажется, в порядке.

Проблема кроется в другом...

Цитата:
Ричард Диминг 16-мая-16 8: 36 утра
Вы должны быть в состоянии использовать что-то вроде:
Catg_type = s.yi.pt.catg.Catg_type

Вы хотите сказать, что не получаете никаких элементов в списке Intellisense?
super_user 17-May-16 0: 49am

да


Если intellisense перестал работать и не отображает имя сущности, которое вы ожидаете увидеть при вводе текста [.] (точка), вы должны проверить отсутствие ссылки на System.LinqSystem.Data.Linq.dllЭто общая причина...

Чтобы устранить проблему, добавьте ссылку на System.Linq в каждом модуле, где intellisense перестал работать. Для ASP.NET страницы, на которые вы должны добавить ссылку веб.конфиг файл:
<system.web>
    ...
    <pages>
       <namespaces>
         <add namespace="System.Linq" />
       </namespaces>
    </pages>
</system.web>