我有5个表,我希望使用linq.i获取一些信息,使用以下查询从数据中读取数据。
var query = (from GRD in _tblStudents.GetQueryable()
join apt in _tblApplicants.GetQueryable()
on GRD.ApplicantID equals apt.ApplicantID
join cls in _tblClasses.GetQueryable()
on GRD.CityID equals cls.ClassID
join prg in _tblPrograms.GetQueryable()
on cls.ProgramID equals prg.ProgramID
join city in _tblCities.GetQueryable()
on GRD.CityID equals city.CityID
where GRD.AcademicYearID == yearId && cls.ProgramID == programId
group apt by new{apt.Gender} into grouped
select new CityWiseStudentModel
{
CityName=city.CityName,
//'city' does not exist in the current context
Gender = grouped.Count(),
programName=prg.Program,
//'prg' does not exist in the current context
}
);
如何从城市表中获取城市名称以及 prg 表中的程序名称
答案 0 :(得分:4)
group <--> by <--> into <-->
已将您的范围更改为IGrouping<a,b>
我的观点不仅是apt.Gender
是你的关键,而是city.CityName
和prg.Program
试试这个(或类似的):
group apt by new{apt.Gender, city, prg} into grouped
select new CityWiseStudentModel
{
CityName = grouped.Key.city.CityName,
Gender = grouped.Count(), //rename GenderCount
programName = grouped.Key.prg.Program,
// Gender = grouped.Key.Gender,
}
答案 1 :(得分:1)
请注意,grouped
只会保留您已分组的内容。如果您只对adt
进行分组,则city
和{{1} }将无法在您的选择中使用。
所以你需要:
prg
(否则他们无法使用)grouped
集合中的CityName
和Program
这样的事情可以解决问题:
grouped